Wargame/LOB
[LOB] darkknight
cgy12306
2019. 9. 30. 10:48
ID : darkknight
PW : new attacker
argv[1]의 47번째 byte가 \xbf면 종료가 된다.
RTL(Return To Library) 기법을 사용하면 된다. RTL 기법은 ret에 라이브버리 주소로 덮는 기법이다.
/bin/sh이 있는 위치를 알아내는 코드이다.
/bin/sh은 0x400fbff9에 위치한다.
이제 system의 주소를 알아보자.
system의 주소는 0x40058ae0이다.
페이로드를 구상해보자.
./bugbear `python -c 'print "A" * 44+"\xe0\x8a\x05\x40"+"ABCD" + "\xf9\xbf\x0f\x40"'`
페이로드는 A를 44개 넣어주고, system함수의 주소를 넣고, 뒤에 dummy 4byte를 넣고 /bin/sh이 있는 주소를 넣어주면 된다.
사실 dummy에는 ret 값이 들어가야 하는데, /bin/sh만 실행시키면 되기 때문에 ABCD라는 dummy를 넣어줬다.