본문 바로가기

분류 전체보기

level2 level2@io:/levels$ cat level02.c//a little fun brought to you by bla #include #include #include #include void catcher(int a){ setresuid(geteuid(),geteuid(),geteuid()); printf("WIN!\n"); system("/bin/sh"); exit(0);} int main(int argc, char **argv){ puts("source code is available in level02.c\n"); if (argc != 3 || !atoi(argv[2])) //인자를 2개 줘야하고 2번쨰인자가 0이면 안된다. return 1; signal(SIGFPE, catcher); //S.. 더보기
level1을 풀다가 생긴 의문점에 대한 분석 1. 메인함수에서 함수를 불러올때 인자를 주지않았는데 어떻게 함수가 정상실행 되는가? 2.YouWin함수는 어떻게 쉘을 실행시키는가 3.fscanf 역추적으로 풀기fscanf가 어떤것인지는 알고 있었지만 레페런스를 찾아보지않고 처음에 풀려는 고집떄메, 역추적으로 문제를 풀었다. 0804809f : 804809f: 81 ec 00 10 00 00 sub $0x1000,%esp 80480a5: b8 03 00 00 00 mov $0x3,%eax //read 시스템콜 80480aa: bb 00 00 00 00 mov $0x0,%ebx // 0번 fd (stdin) 80480af: 89 e1 mov %esp,%ecx 80480b1: ba 00 10 00 00 mov $0x1000,%edx 80480b6: cd .. 더보기
level1 putty로 접속 ssh level1@io.smashthestack.orgpassword: level1 level1@io:~$ cd /levelslevel1@io:/levels$ gdb -q level01Reading symbols from /levels/level01...(no debugging symbols found)...done.(gdb) disas mainDump of assembler code for function main: 0x08048080 : push $0x8049128 0x08048085 : call 0x804810f 0x0804808a : call 0x804809f 0x0804808f : cmp $0x10f,%eax 0x08048094 : je 0x80480dc 0x0804809a .. 더보기
pwn3 시그니쳐 확인elf 32bit 한번 실행시켜보았다. strace 에 attach한후 간단히 분석해봄특이한 함수는 보이지 않고 eip컨트롤 가능함이 보임 로컬문제라면 간단히 환경변수라든지 공격법이 많겟지만,이건 데몬서비스로 돌리는 리모트문제임.데몬서비스로 돌리는 만큼 do_system으로 eip를 바꿔서 쉘을 따보도록 하겟음. 그게 젤 간단할듯함.근데 do_system이 어딧는지 모르니 메모리릭이 있는지 찾아봐야댐. ida로 붙여서보면 FSB를 할수 있다는것을 알 수 있음. ida로 분석해보면 알겟지만,처음에 ix란 함수에서 malloc을 하고 pwn: %d라는 문자열을 저장한다.근데 free를 하고 똑같은 크기를 다시 malloc하기 떄문에 알고리즘상 똑같은 청크를 다시받아오게 된다. 그리고 show함수.. 더보기
가지 않은 길 가지 않은 길 노란 숲 속에 길이 두 갈래로 났었습니다.나는 두 길을 다 가지 못하는 것을 안타깝게 생각하면서,오랫동안 서서 한 길이 굽어 꺾여 내려간 데까지,바라다볼 수 있는 데까지 멀리 바라다보았습니다. 그리고, 똑같이 아름다운 다른 길을 택했습니다.그 길에는 풀이 더 있고 사람이 걸은 자취가 적어,아마 더 걸어야 될 길이라고 나는 생각했었던 게지요.그 길을 걸으므로, 그 길도 거의 같아질 것이지만. 그 날 아침 두 길에는낙엽을 밟은 자취는 없었습니다.아, 나는 다음 날을 위하여 한 길은 남겨 두었습니다.길은 길에 연하여 끝없으므로내가 다시 돌아올 것을 의심하면서……. 훗날에 훗날에 나는 어디선가한숨을 쉬며 이야기할 것입니다.숲 속에 두 갈래 길이 있었다고,나는 사람이 적게 간 길을 택하였다고,그리고.. 더보기
CODEGATE2014 vuln300 (4stone) write-up 더보기
CODEGATE 2013 binary300 write-up 더보기
CODEGATE 2013 vuln300 write-up 더보기
CODEGATE 2013 vuln200 write-up 공부초반에 쓴거라 다소 허접함이 보이네요. 더보기
CODEGATE 2014 vuln250 (angry_doreamon) 해당 문제의 exploit은 3개의 stage로 구성하였다. stage1은 canary와 ebp를 구하는 부분 stage2은 write를 사용해 memory leak을 시켜서 mprotect의 주소를 구하는 부분 stage3은 mprotect로 bss영역에 실행권한을 준 뒤, bind_tcp쉘코드를 실행시키는 부분이다. from socket import *from struct import *from time import sleep p = lambda x : pack(" 더보기