일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- webhacking
- LOB
- 해킹
- Buffer Overflow
- Operating System
- BOF
- pwnable
- PWN
- SQL
- wargame
- Payload
- Spring
- System
- webhacking.kr
- stack overflow
- Pwnable.kr
- Spring MVC
- Shell code
- 정보처리기사 실기
- 네트워크
- OS
- 웹해킹
- hacking
- 정보보안기사 실기
- 워게임
- 정보보안기사
- 운영체제
- system hacking
- Spring Framework
- Lord of BOF
- Today
- Total
목록wargame (64)
DongDD's IT
[pwnable.kr]passcode Problem 로그인 시스템을 기초로 하는 passcode를 만드는 법을 들었다고 되어있고 C code로 에러없이 컴파일했지만 몇 개의 warning이 출력되었는데 봐줄 수 있느냐고 되어있었다.문제만 읽어서는 예측이 되지 않아 일단 ssh로 접속을 했다. ssh로 접속해서 확인해보니 flag 파일 하나와 passcode 실행 파일, passcode.c 소스 코드 파일이 있었다.먼저 소스코드를 확인해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include void login(){ int passcode1; int passcode2; printf("e..
[pwnable.kr] flag Problem packed된 선물을 받았다고 되어있고 그것을 열어보라고 되어있었다.이번 문제에서는 접속할 수 있는 서버가 없었고 다운 받을 수 있는 파일이 하나 주어져있었다.reversing이라고 되어있었고 해당 binary파일만 있으면 문제를 해결할 수 있다고 써있었다.packed를 보아 packing된 파일일 수도 있다는 생각이 들었다. Solution 먼저 파일을 ubuntu환경으로 옮겨 실행해보니 다음과 같은 message가 출력되었다. 이 message가 flag인가 싶어 입력해보았지만 실패했다.Reversing과 관련되었다고 써있었기 때문에 IDA를 통해 열어보았다. 코드 내에 특별한 점은 보이지 않아 string을 확인해보니 upx라는 단어를 볼 수 있었다.u..
[pwnable.kr] bof Problem buffer overflow가 가장 일반적인 소프트웨어 취약점이라고 들었는데 이것이 사실이냐 묻고있다.buffer overflow에 대한 문제일 것 같았다.이번 문제에서는 ssh로 접속할 수 있는 서버가 주어지지 않았고 nc로 프로그램에 연결할 수 있게 되어있었고 소스 코드 파일과 bof 실행 파일을 다운 받을 수 있게 되어있었다.먼저 소스 코드를 확인해보았다. 12345678910111213141516171819#include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcaf..
[pwnable.kr] collision Problem 문제에서 MD5 Hash 충돌에 대해서 들었다고 되어있고 자신 또한 그런 것을 하고 싶다라고 적혀있었다.MD5 Hash에 관련된 문제인 것 같았다.먼저 ssh로 접속해보았다. col 실행 파일과 col.c 소스 코드 파일과 flag파일이 있었다. 먼저 소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829303132#include #include unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
[pwnable.kr] fd Problem Linux의 file descriptor가 무엇인지 묻고 있는 문제였다.fd와 관련된 내용이 나올 것 같다는 생각이 들었다. ssh로 fd@pwnable.kr에 접속하니 위와 같은 화면을 볼 수 있었다.fd 실행파일과 fd.c 소스 코드 파일과 flag 파일이 있었다.먼저 소스 코드를 확인해 보았다. 12345678910111213141516171819202122#include #include #include char buf[32];int main(int argc, char* argv[], char* envp[]){ if(argc
[LOB] Level20 xavius Problem LOB 마지막 20번째 문제이다. 마지막 문제에서도 death_knight 실행 파일 하나와 death_knight.c 소스 코드 파일이 있었다.먼저 소스 코드를 확인해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include #include #include #include #include #include #include #include #include main(){ char buffer[40]; int server_fd, client_fd; struct sockaddr_in ..
[LOB] Level19 nightmare Problem 이번 문제에서도 xavius 실행 파일과 xavius.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include main(){ char buffer[40]; char *ret_addr; // overflow! fgets(buffer, 256, stdin); printf("%s\n", buffer); if(*(buffer+47) == '\xbf') { printf("stack retbayed you!\n"); exit(0); } if(*(buffer+47)..
[LOB] Level18 succubus Problem 이번 문제에서도 nightmare 실행 파일과 nightmare.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 123456789101112131415161718192021222324252627282930#include #include #include #include main(int argc, char *argv[]){ char buffer[40]; char *addr; if(argc
[LOB] Level17 zombie_assassin Problem 이번 문제에서도 succubus 실행 파일과 succubus.c 소스 코드 파일이 있었다.먼저 소스 코드를 확인해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788#include #include #include // the inspectorint check = 0; void MO(char *cmd){ if(check != 4) exit(0); printf("welcome to the ..
[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의 주소가 들어간다...