利用foo函数的Bof漏洞攻击:构造攻击字符串
利用foo函数的Bof漏洞攻击:构造攻击字符串
一、基础知识储备
objdump
反汇编指令、gdb
函数调试运行、Perl
语言、|
管道符
二、实验步骤
1. 通过反汇编了解程序功能及代码
①反汇编查看文件内容
②可以知道getShell
函数地址为0804847d
③可知foo
函数执行完成之后,系统会调用的下一条指令的地址为80484ba
,此地址为返回地址
我们要做的就是通过foo
函数的Bof
漏洞输入一段设计好的字符串覆盖掉80484ba
,使得80484ba
的值为0804847d
,这样就会执行getshell
函数。
2. 确定输入的哪几个字符会覆盖返回地址
2.1调试运行程序 gdb
通过输入gdb 20154305
指令调试程序,再输入r
运行程序
2.2 输入一串字符大致确定覆盖位置
④程序运行后我们输入字符串111111112222222233333333444444445555555566666666
⑤程序出现分段错误,0x35353535 in ?? ()
,意思是这个地址的指令错误
此时我们通过info r
查看寄存器信息
⑥显示出eip
指令寄存器存储的地址为0x35353535
,此ASCII值代表5555
⑦也可以通过info r eip
指令直接显示指令寄存器存储的地址。
5555
则可以知道我们输入的字符串从55555555
开始溢出,但是还不确定是哪四个5
2.3 进一步确定覆盖位置
继续调试运行20154305
文件
⑧输入字符串`1111111122222222333333334444444412345678'产生溢出错误
⑨查看指令寄存器eip
内的值为0x34333231
,表示4321
。
由此可知,我们输入的字符串1111111122222222333333334444444412345678
中的1234
覆盖了返回地址的值
所以接下来我们需要修改1234
的值为0804847d
进行覆盖
3. 构造输入字符串
3.1 确定字符串输入顺序
就是需要输入11111111222222223333333344444444\x08\x04\x84\x7d
,还是输入11111111222222223333333344444444\x7d\x84\x04\x08
由⑨可以知道小字节优先,应该输入11111111222222223333333344444444\x7d\x84\x04\x08
3.2 构造输入字符串
由为我们没法通过键盘输入\x7d\x84\x04\x08
这样的16进制值,所以先生成包括这样字符串的一个文件。
键入perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
\x0a
表示回车。
可以通过xxd
查看文件十六进制格式的内容。
3.3 然后将input的输入,通过管道符“|”,作为20154305的输入,覆盖返回地址
(cat input; cat) | ./20154305
此时我们就可以输入Shell
指令了
箭头11
的ls
就是Shell
指令。
到此通过利用foo的Bof漏洞攻击已经完成。
三、实验总结
利用缓冲区溢出的漏洞攻击比较难的地方是如何确定输入的哪些字符串会覆盖返回地址,以及如何通过管道输入,有些新的知识需要我这个小白消化理解。
利用foo函数的Bof漏洞攻击:构造攻击字符串的更多相关文章
- DedeCMS V5.7sp2最新版本parse_str函数SQL注入漏洞
织梦dedecms,在整个互联网中许多企业网站,个人网站,优化网站都在使用dede作为整个网站的开发架构,dedecms采用php+mysql数据库的架构来承载整个网站的运行与用户的访问,首页以及栏目 ...
- 学习xss模拟构造攻击(第一篇)
本文作者:i春秋签约作家——rosectow 0×00前言 XSS又名叫CSS全程(cross site scriptting),中文名跨站脚本攻击,目前网站的常见漏洞之一,它的危害没有像上传漏洞,s ...
- PHP ‘asn1_time_to_time_t’函数内存损坏漏洞
漏洞名称: PHP ‘asn1_time_to_time_t’函数内存损坏漏洞 CNNVD编号: CNNVD-201312-348 发布时间: 2013-12-18 更新时间: 2013-12-18 ...
- Samba ‘dcerpc_read_ncacn_packet_done’函数缓冲区溢出漏洞
漏洞名称: Samba ‘dcerpc_read_ncacn_packet_done’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201312-169 发布时间: 2013-12-12 更新时间 ...
- Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-423 发布时间: 2013-11-29 更新时间: 201 ...
- Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞
漏洞名称: Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞 CNNVD编号: CNNVD-201311-422 发布时间: 2013-11-29 更新时间: 2013- ...
- Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞
漏洞名称: Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞 CNNVD编号: CNNVD-201311-421 发布时间: 2013-11-29 更新时间: 2013 ...
- Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-392 发布时间: 2013-11-29 更新 ...
- Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-154 发布时间: 2013-11-13 更新时间: 201 ...
随机推荐
- ARM920T的Cache
转载自:http://www.eefocus.com/mcu-dsp/242034 ARM920T有16K的数据Cache和16K的指令Cache,这两个Cache是基本相同的,数据Cache多了一些 ...
- 阿里云 配置ssl 在nginx上
写给自己的备忘录: 很乱 如果你也是 配置nginx ssl 可以给我留言 ,我是为了 捣鼓微信小程序后台 需要https 阿里云有免费一年的 ssl服务 链接 https://www.aliyun. ...
- Python实践练习:强口令检测
题目: 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字.你可能需要用多个正则表达式来测试该字符串,以保证它的 ...
- linux使用privoxy将55转为http代理
=============================================== 2018/3/21_第3次修改 ccb_warlock 更新 ...
- 关于div文字点击编辑的插件
(function(w,i){ w.inputOut = new i(); })( window, function(){ var inputOut = function(){ this.into = ...
- 关于ES6兼容IE 问题记录之一
这两天在做前端网页时,遇到一个问题,页面打开发生乱码,如下: 现象:360 浏览器,在急速模式下(即谷歌模式)是OK的显示,第一张图布局OK:在兼容模式下(即IE模式)是显示NG的,第二张图布局乱码 ...
- source tree常用功能
参考地址: https://blog.csdn.net/weixin_39568744/article/details/81413198
- 面试小结之Elasticsearch篇(转)
最近面试一些公司,被问到的关于Elasticsearch和搜索引擎相关的问题,以及自己总结的回答. Elasticsearch是如何实现Master选举的? Elasticsearch的选主是ZenD ...
- 尚硅谷springboot学习25-嵌入式Servlet容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器:
- gitlab 常用维护命令
GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.Github是公共的git仓库,而Gitlab适合于搭建企业内部私有gi ...