Wargame
-
[Toddlers's Bottle] collisionWargame/pwnable.kr Challenge 2019. 1. 17. 19:20
→ 문제는 아래와 같다. → 로그인 후 파일 확인. → col.c 소스코드 확인. → 문제 해결을 위해선, hashcode == check_password(artv[1])의 값이 참으로 만들어야 한다. 이 때, hashcode 값은 0x21DD09EC이고, check_password(argv[1])의 값이랑 비교한다. → check_password 함수를 살펴보면, 인자 값으로 argv[1] 값을 받고 이를 ip 배열로 받아 더하여 리턴한다. → 두번째 분기문에서 strlen(argv[1]) != 20 에 의해 실행 인자 값은 반드시 20바이트이여야 한다. → 결국 20바이트의 passcode 인자 값을 통해 check_password 함수 연산 결과와 0x21DD09EC의 값이 동일하게 만드는 문제이다..
-
lvl 12Wargame/HackerSchool FTZ 2019. 1. 15. 22:18
→ 힌트 정보 열람. → setreuid 함수와 gets 함수를 볼 수 있음. bof 문제로 추측. 따라서, gdb를 통해 디버깅. [level12@ftz tmp]$ gdb -q attackme(gdb) set disassembly-flavor intel(gdb) disas mainDump of assembler code for function main:0x08048470 : push ebp0x08048471 : mov ebp,esp0x08048473 : sub esp,0x1080x08048479 : sub esp,0x80x0804847c : push 0xc150x08048481 : push 0xc150x08048486 : call 0x804835c 0x0804848b : add esp,0x100x080..
-
lvl 11Wargame/HackerSchool FTZ 2019. 1. 13. 21:38
→ 힌트 정보 열람. → setreuid 함수 및 strcpy 함수를 볼 수 있다. BOF 문제같지만, strcpy 함수의 인자를 보면, argv[1]을 str로 넣고, print(str)을 한다. 포맷스트링 문제도 된다. → BOF 문제로 먼저 접근해, tmp로 복사한 후, gdb로 디버깅한다. 0x08048470 : push ebp0x08048471 : mov ebp,esp0x08048473 : sub esp,0x1080x08048479 : sub esp,0x80x0804847c : push 0xc140x08048481 : push 0xc140x08048486 : call 0x804834c 0x0804848b : add esp,0x100x0804848e : sub esp,0x80x08048491 : ..
-
lvl 02 gremlin -> coboltWargame/HackerSchool The Load of the BOF Redhat 2019. 1. 13. 21:36
→ 소스코드는 아래와 같다. 1 /* 2 The Lord of the BOF : The Fellowship of the BOF 3 - cobolt 4 - small buffer 5 */ 6 7 int main(int argc, char *argv[]) 8 { 9 char buffer[16]; 10 if(argc < 2){ 11 printf("argv error\n"); 12 exit(0); 13 } 14 strcpy(buffer, argv[1]); 15 printf("%s\n", buffer); 16 } → 어셈블리 코드는 아래와 같다. 0x8048430 0x8048431 0x8048433 0x8048436 0x804843a 0x804843c 0x8048441 0x8048446 0x8048449 0x80..