ciscn_2019_ne_5 wp (python3)

事前准备

32小端,部分延迟绑定,不可执行

看看ida

有system字符串,说明有其对应函数

(此题文件分析部分较长就另起一个标题)

ida函数分析

前面是各种缓冲区重置后面就像put()里面说的,每个函数对应的功能就是这样,通过switch进函数

每个函数跟进看一下:

第一个case0直接正常退出就不说了

这个case1可以挺有说法的,这里的a1接收的是主函数中src字符串数组的首地址

scanf函数

注意scanf函数的写法,a1没有&,字符串的写入就是不用&的,%s寻找的是后面参数中的地址,所以当不用取址符时,就会把a1中存储的当做地址进行写入。这里的存储地址,也就是指向src,所以这个函数实现了,对src这个变量的写入。

可以看到每个case后面基本上都还有同一个函数,跟进去看看:

jmp一个地址: 也就是将程序执行流跳转到这个地址去,ctrl+s查看文件段,发现大致在text段。

在ida总汇编界面找找具体指向哪里

直接指向的句子是函数调用准备的第一句。不难发现,他又跳回了switch那的功能选择界面,应该是程序功能所致

再来看看其他函数

打印src,没啥用

这个函数更没啥用,应该就没写完,就一个echo printing

这个函数,就是我们要找的东西了

漏洞及其利用思路

可以发现,getflag函数中出现了strcpy,而dest+v3总共只有64k,能够溢出(我们的src可以写128),程序中存在system函数,32位sh直接入栈调用就行,所以我们现在还缺一个sh

你可能会疑惑,不应该是‘‘/bin/sh’’吗,为啥是‘sh’

system函数实际上执行的是linux系统中的命令,/bin/sh命令和sh命令都可以呼出shell

(这题的主要原因还是没找到/bin/sh字符,其他甚至有题目是直接 cat flag,本着有什么用什么的原则)

ropgadget找找

到这里,就可以编写exp了

exp:

getshell:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值