일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 해킹
- 워게임
- Spring MVC
- LOB
- OS
- Operating System
- 네트워크
- SQL
- 정보보안기사
- System
- PWN
- wargame
- system hacking
- hacking
- pwnable
- Buffer Overflow
- Shell code
- stack overflow
- 정보처리기사 실기
- BOF
- Spring
- webhacking.kr
- Pwnable.kr
- 정보보안기사 실기
- Spring Framework
- Payload
- 웹해킹
- Lord of BOF
- 운영체제
- webhacking
- Today
- Total
목록system hacking (38)
DongDD's IT
[LOB] Level16 assassin Problem 이번 문제도 zombie_assassin 실행 파일과 zombie_assassin.c 소스 코드 파일이 있었다.먼저 소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829#include #include main(int argc, char *argv[]){ char buffer[40]; if(argc ret가 실행되어야 하지만 return address에 leave -> ret가 한번 더 들어가게 되므로 leave -> leave -> ret가 들어가게 된다. 즉, 처음 leave에서는 mov esp, ebp와 pop ebp를 통해 ebp에 sfp에 넣었던 fake ebp의 주소가 들어간다...
[LOB] Level15 giant Problem 이번 문제도 assassin 실행 파일과 assassin.c 소스 코드 파일이 있었다.먼저 소스 코드를 확인해보았다. 12345678910111213141516171819202122232425262728293031#include #include main(int argc, char *argv[]){ char buffer[40]; if(argc
[LOB] Level14 bugbear Problem 이번 문제에서도 giant 실행 파일과 giant.c 소스 코드 파일이 주어져있었다.먼저 소스 코드를 확인해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include #include main(int argc, char *argv[]){ char buffer[40]; FILE *fp; char *lib_addr, *execve_offset, *execve_addr; char *ret; if(argc
[LOB] Level13 darkknight Problem 이번 문제도 bugbear 실행 파일과 bugbear.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223#include #include main(int argc, char *argv[]){ char buffer[40]; int i; if(argc
[LOB] level12 golem Problem 이번 문제에서도 darkknight 실행 파일과 darkknight.c 소스 코드 파일이 있었다.소스 코드를 확인해 보았다. 1234567891011121314151617181920#include #include void problem_child(char *src){ char buffer[40]; strncpy(buffer, src, 41); printf("%s\n", buffer);} main(int argc, char *argv[]){ if(argc
[LOB] Level11 skeleton Problem 이번 문제도 golem 실행 파일과 golem.c 소스 코드 파일이 주어졌다.소스 코드를 확인해보았다. 12345678910111213141516171819202122232425262728#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; if(argc 실패 LD_PRELOAD에 대해서는 몰랐지만 LD_LIBRARY_PATH에 대해서는 알고 있었어서 먼저 시도해보았다. 먼저 fPIC 옵션과 shared 옵션을 사용해 gcc로 공유 라이브러리 파일을 만들어주었다.이것을 LD_LIBRARY_PATH에 넣어주고 gdb를 통해 메모리를 확인..
[LOB] Level10 vampire Problem 이번 문제도 skeleton 실행 파일과 skeleton.c 소스 코드 파일이 있었다.먼저 소스 코드를 확인해보았다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i, saved_argc; if(argc 48){ printf("argument is too long!\n"); exit(0); } // argc saver saved_argc = argc; strcpy(buffer, argv[1]..
[LOB] Level9 troll Problem 이번 문제에서도 vampire 실행 파일 하나와 vampire.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829#include #include main(int argc, char *argv[]){ char buffer[40]; if(argc
[LOB] Level8 orge Problem 이번 문제도 마찬가지로 troll 실행 파일과 troll.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 123456789101112131415161718192021222324252627282930313233343536373839404142#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; // here is changed if(argc != 2){ printf("argc must be two!\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, st..
[LOB] Level7 darkelf Problem 이번 문제에서도 orge 실행 파일과 orge.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; if(argc 48) { printf(“argument is too long!\n”); exit(0); } strcpy(buffer, argv[1]); printf(“%s\n”, buffer); // buffer hunter memset(buffe..