20145322何志威《网络对抗》逆向及Bof基础
20145322何志威《网络对抗》逆向及Bof基础
实践目标
本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。
本次实践主要是学习两种方法
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
现实情况中的攻击目标:
运行原本不可访问的代码片段
强行修改程序执行流
以及注入运行任意代码。
实践原理
缓冲区溢出:
缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。
缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在内存的,同样程序的数据也在内存中,因此直接从内存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。
实践过程
1 在正式开始实践之前,先对pwn1文件做个备份,命名为20145322

2 使用指令objdump -d 20145310 | more对目标文件进行反汇编



3 使用vi打开后,输入:%!xxd,将显示模式切换为16进制模式;输入/e8 d7查找要修改的内容

修改成 e8 c3

4 然后存盘退出
反汇编,发现原汇编指令已经被成功修改

5 再次执行20145322

通过构造输入参数,造成BOF攻击,改变程序执行流程
1 再次cp备份一个20145310
2 进入gdb调试,输入1111111122222222333333334444444412345678,输入达到28字节时产生溢出Segmentation fault

3 接下来通过gdb调试来确认输入字符串的哪几个字符会覆盖到返回地址,输入info r查看各寄存器的值:

4 观看eip的值,是ASCII码的 1234,也就是说我们输入的“1234”覆盖了它的地址,所以我们只需要将getshell的内存地址替换这4个字符,就可以达到程序向getshell函数转移的目的。
我们要构造一串特殊的输入,由于getShell的内存地址是0x0804847d,而其对应的ASCII没有字符,所以我们通过一个简单的perl脚本语言来构造输入值,输入:perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
使用16进制查看指令xxd查看input文件的内容是否如预期:

5 最后将input的输入,通过管道符“|”,作为20145322的输入,执行得到结果

20145322何志威《网络对抗》逆向及Bof基础的更多相关文章
- 20145322何志威《网络对抗技术》Exp6 信息搜集技术
20145322何志威<网络对抗技术>Exp6 信息搜集技术 实验内容 掌握信息搜集的最基础技能: (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发 ...
- 20145222何志威《网络对抗》- Web安全基础实践
20145322何志威<网络对抗>Exp9 Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到"Web表单递交"或& ...
- 20145322何志威 Exp7 网络欺诈技术防范
20145322何志威 Exp7 网络欺诈技术防范 一 实践过程记录 简单应用SET工具建立冒名网站 1 确保kali和靶机能ping通: 2 为了使得apache开启后,靶机通过ip地址可以直接访问 ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
- 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础
20145203盖泽双 <网络对抗技术> MAL_逆向与Bof基础 实践目标 (1)我们要通过修改程序代码,使得程序运行其自身中本不该运行的代码片段. (2)在这里,我们有一个名为2014 ...
- 20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础
20155201 李卓雯 <网络对抗技术>实验一 逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,f ...
- 20145308 《网络对抗》 逆向及BOF基础实践 学习总结
20145308 <网络对抗> 逆向及BOF基础实践 学习总结 实践目的 通过两种方法,实现程序能够运行原本并不会被运行的代码 实践原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串 ...
- 20145236《网络对抗》Exp1 逆向及Bof基础
20145236<网络对抗>Exp 1逆向及Bof基础 一.实践目标 运行原本不可访问的代码片段 强行修改程序执行流 以及注入运行任意代码. 二.基础知识及实践准备 理解EIP寄存器及其功 ...
- 20155305乔磊《网络对抗》逆向及Bof基础
20155305乔磊<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...
随机推荐
- Delphi的打开文件对话框-TOpenDialog
1.TOpenDialog组件的典型用法 “打开”对话框是用TOpenDialog组件实现的,TOpenDialog组件是非可视组件. Filter属性用于设置文件过滤器,让对话框只列出特定类型的文件 ...
- 【BZOJ3037/2068】创世纪/[Poi2004]SZP 树形DP
[BZOJ3037]创世纪 Description applepi手里有一本书<创世纪>,里面记录了这样一个故事……上帝手中有着N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放 ...
- ios 的ASIHTTPRequest学习
发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方法会使应用Hang住而不响应任何用户事件.所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替(下面会讲到). - (I ...
- sublime3095-注册码下载安装
链接:http://pan.baidu.com/s/1hqejFKS 下载地址:下载 提取密码:egh5 ----- BEGIN LICENSE ----- Andrew Weber Single U ...
- UESTC 485 Game(康托展开,bfs打表)
Game Time Limit: 4000/2000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status t ...
- ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程
要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2. 1.ROS的安装 我的电脑安装的是ubuntu16.04系统,所以我安 ...
- Servlet------>jsp EL表达式
取值: ${data}------>pageContext.findAttribute("data"); ${data.name}------>data.getName ...
- 'module' object has no attribute 'select'
和tensorflow的版本有关系 新版本 将tf.select替换为tf.where
- CF1028E Restore Array 构造
正解:构造 解题报告: 传送门! 是的灵巧还在写构造,,,不知道484我做题太慢的缘故我感觉我做了好久的构造了然而一半的题目都没做完QAQ 要哭出来了QAQ 然后说下这题的解法,开始花了这——么的时间 ...
- (1.2)DML增强功能-4大排名函数与top ties/tablesample
关键字:sql server窗口函数.分析函数.四大窗口函数 1.row_number() over( partition by column order by column) (1)测试数据 (2 ...