System&Write up/Pwnable.kr

[pwnable.kr] Toddler's Bottle - bof

Jubil 2017. 11. 22. 00:15
반응형

[pwnable.kr] Toddler’s Bottle – bof

 


 


 

코드를 확인하겠습니다.

 


key0xdeadbeef로 넣어줬는데 그 값이 gets()함수로 인해서 overflowme[32]에서 overflow가 발생하고, 그걸 이용해서 key0xcafebabe로 변조하면 쉘이 실행되는 코드입니다.

 

바이너리를 다운 받아서 gdb에 올려봅시다.

 


func 함수를 보면 ebp-0x2cgets 함수의 인자로 넘어가는데, overflowme의 시작 주소라는 것을 알 수 있습니다.

그리고 func의 첫 번째 인자인 keyebp+0x8라는 걸 알 수 있습니다.

 

python으로 overflowmekey의 거리를 구하겠습니다.


 

그럼 52byte만큼 더미를 주고 그 뒤를 0xcafebabe를 주면 될 것 같습니다.

gets 함수로 받으니 파이프를 써서 값을 전달하겠습니다.

 

payload : (python –c ‘print “A”*52 + “\xbe\xba\xfe\xca”’; cat) | ./bof


 

바이너리에 공격이 먹혔습니다. 이제 nc에서 실행해봅시다.

 

payload : (python –c ‘print “A”*52 + “\xbe\xba\xfe\xca”’; cat) | nc pwnable.kr 9000


 

flag가 출력되었습니다.

반응형