首页
社区
课程
招聘
[原创]2.实战栈溢出漏洞
发表于: 2019-12-23 23:40 8623

[原创]2.实战栈溢出漏洞

2019-12-23 23:40
8623

编写exploit攻击程序,构造畸形数据包,使exploit_me_A.exe成功执行shellcode

用IDA先大体的看了下,就是一个正常的TCP的服务器,我们要给他发包让他接收到我们的包,才好继续调试他。

编写socket通信代码,想要和这个服务端通信就得知道ip和端口
通过下面bind这个函数得参数可以知道7777是端口
0代表是INADDR_ANY,本机所有ip都可以
ofo

知道这些就可以写代码了

接下来我又看到了recv得参数是512个字节每次接收,这里是不会溢出得,他每次收只会收512个字节,所有写服务器得一般都会循环收包,直到收完

接下来往下面看
这三句是判断recv的返回值
如果返回值esi==0则执行下面代码,否则跳转
也就是recv收到东西就跳转

跳转后进入一个call,参数是buff,也就是发包的东西

进入函数内部
很容易发现红色框抬栈0xC8
然后黑色框算buff 00结尾的长度
蓝色框是拷贝字节esi到edi
shr 2是除4,然后赋值给ecx 然后movsd4个字节一拷贝
还剩下不能整除的字节数
and ecx,3就是%4
然后继续拷贝movsb

在这里就能够想到当超过C8都没有00比如CC后面才有00那么返回地址不是就被覆盖了,并且我后面要跑的代码里面不能有00。根据上一篇的知识,寻找jmp esp
我是用插件找的,这里就不详细说了,上一篇有。然后把这个地址填写到0XC8的位置。后面则可以填上不带00的shellcode,这样就能执行代码了
ofo

实现的效果图
ofo


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-12-23 23:41 被自然dashen编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 14530
活跃值: (17548)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
mark,楼主辛苦了
2019-12-24 08:44
0
雪    币: 4120
活跃值: (5822)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
辛苦了LZ,学习了,期待下一节。
2019-12-25 18:00
0
雪    币: 106
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
辛苦了LZ
2019-12-29 07:38
0
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
厉害
2019-12-30 14:11
0
游客
登录 | 注册 方可回帖
返回
//