반응형
[pwnable.kr] Toddler’s Bottle – bof
코드를 확인하겠습니다.
key를 0xdeadbeef로 넣어줬는데 그 값이 gets()함수로 인해서 overflowme[32]에서 overflow가 발생하고, 그걸 이용해서 key를 0xcafebabe로 변조하면 쉘이 실행되는 코드입니다.
바이너리를 다운 받아서 gdb에 올려봅시다.
func 함수를 보면 ebp-0x2c가 gets 함수의 인자로 넘어가는데, overflowme의 시작 주소라는 것을 알 수 있습니다.
그리고 func의 첫 번째 인자인 key는 ebp+0x8라는 걸 알 수 있습니다.
python으로 overflowme와 key의 거리를 구하겠습니다.
그럼 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가 출력되었습니다.
반응형
'System&Write up > Pwnable.kr' 카테고리의 다른 글
[pwnable.kr] Toddler's Bottle - random (0) | 2017.11.28 |
---|---|
[pwnable.kr] Toddler's Bottle - passcode (0) | 2017.11.24 |
[pwnable.kr] Toddler's Bottle - flag (0) | 2017.11.23 |
[pwnable.kr] Toddler's Bottle - collision (0) | 2017.11.21 |
[pwnable.kr] Toddler's Bottle - fd (0) | 2017.11.20 |