20145234黄斐《网络对抗技术》PC平台逆向破解
Shellcode注入
基础知识
- Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址。
实践过程
shellcode的生成方法指导书上已经写得很详细了,在做实验时我直接用的是老师上课用的shellcode:
将环境设置为:堆栈可执行、地址随机化关闭
选择
anything+retaddr+nops+shellcode
的结构构造攻击buf,先猜测返回地址所在位置,并且找到shellcode
所在地址在终端注入这段攻击buf:
先不输入“回车”,在后面的调试过程中需要继续运行的时候再回车,此时再打开另外一个终端,用gdb来调试
20145234pwn1
这个进程,先找到该进程的进程ID,再打开gdb,用attach
指令对该进程进行调试:对
foo
函数进行反汇编:在
ret
处设置断点,接着继续运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,来分析我们之前猜测的返回地址位置是否正确以及shellcode
的地址:- 由上图可以推断出
shellcode
地址为:0xffffd384
继续运行,可以确认返回地址是被我们之前输入的
\x01\x02\x03\x04
所覆盖的:将返回地址修改为
0xffffd384
,重新注入,可以发现已经成功了!
Return-to-libc攻击深入
基础知识
Return-into-libc
攻击方式不具有同时写和执行的行为模式,因为其不需要注入新的恶意代码,取而代之的是重用漏洞程序中已有的函数完成攻击,让漏洞程序跳转到已有的代码序列(比如库函数的代码序列)。攻击者在实施攻击时仍然可以用恶意代码的地址(比如 libc 库中的 system()函数等)来覆盖程序函数调用的返回地址,并传递重新设定好的参数使其能够按攻击者的期望运行。这就是为什么攻击者会采用return-into-libc
的方式,并使用程序提供的库函数。这种攻击方式在实现攻击的同时,也避开了数据执行保护策略中对攻击代码的注入和执行进行的防护。- 攻击者可以利用栈中的内容实施
return-into-libc
攻击。这是因为攻击者能够通过缓冲区溢出改写返回地址为一个库函数的地址,并且将此库函数执行时的参数也重新写入栈中。这样当函数调用时获取的是攻击者设定好的参数值,并且结束后返回时就会返回到库函数而不是 main()。而此库函数实际上就帮助攻击者执行了其恶意行为。更复杂的攻击还可以通过return-into-libc
的调用链(一系列库函数的连续调用)来完成。
实践过程
- 添加用户:
转换用户,进入32位linux环境,将地址随机化关闭,并且把
/bin/sh
指向zsh
:将漏洞程序保存在
/tmp
目录下:编译该代码,使用
–fno-stack-protector
来关闭阻止缓冲区溢出的栈保护机制,并设置给该程序的所有者以suid权限,可以像root用户一样操作:创建读取环境变量的程序并编译:
将攻击程序保存在
/tmp
目录下:用刚才的
getenvaddr
程序获得BIN_SH
地址:利用gdb获得
system
和exit
地址:将上述所找到的三个内存地址填写在
20145234exploit.c
中:删除刚才调试编译的
20145234exploit
程序和badfile
文件,重新编译修改后的20145234exploit.c
:先运行攻击程序
20145234exploit
,再运行漏洞程序20145234retlib
,攻击成功,获得了root权限:
20145234黄斐《网络对抗技术》PC平台逆向破解的更多相关文章
- 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验
20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...
- 2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解
2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解 目录 一.逆向及Bof基础实践说明 二.直接修改程序机器指令,改变程序执行流程 三.通过构造输入参数,造成BOF攻击,改变程 ...
- 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
20145312 <网络对抗>PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验 注入shellcode 实验步骤 1. 准备一段Shellcode 2. ...
- 20155305《网络对抗》PC平台逆向破解(二)
20155305<网络对抗>PC平台逆向破解(二) shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 ...
- 20155311《网络对抗》PC平台逆向破解(二)
20155311<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...
- 20145221《网络对抗》PC平台逆向破解
20145221<网络对抗>PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户 ...
- 20155307《网络对抗》PC平台逆向破解(二)
20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...
- 20145201李子璇《网络对抗》PC平台逆向破解
20145201<网络对抗>PC平台逆向破解 准备阶段 下载安装execstack. 获取shellcode的c语言代码 设置堆栈可执行 将环境设置为:堆栈可执行.地址随机化关闭(2开启, ...
- 20145219《网络对抗》PC平台逆向破解
20145219<网络对抗>PC平台逆向破解 shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 (1) ...
- 20145240《网络对抗》PC平台逆向破解_advanced
PC平台逆向破解_advanced shellcode注入 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.另外,Shellcode一般是 ...
随机推荐
- 分享PHP小马一枚,完美绕过安全狗检测。
没做免杀之前,被狗咬死: 直接上代码: $p=realpath(dirname(__FILE__)."/../").$_POST["a"];$t=$_POST[ ...
- Mac上安装MongoDB
1.访问MongoDB官方下载地址 http://www.mongodb.org/downloads 2.点击“DOWNLOAD(tgz)”按钮: 3.将下载的文件压缩包解压后剪切到你的Mac中某个位 ...
- Linux环境下GNU, GCC, G++编译器
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012823258/article/details/36890125 一.GNU GNU是" ...
- [Python web开发] Web框架开发基础 (一)
Python WEB框架 WSGI,WEB Server Gateway Interface,可以看做是一种底层协议,它规定了服务器程序和应用程序各自实现上面接口.Python的实现称为wsgiref ...
- ps基础练习
1. 直接把图片拖进来 2. F 键 视窗全屏快捷键 3. 此时的图片是“背景”层,不能直接编辑,双击该背景层,就变成了“图层”,就可以编辑了 4. 5. 6. 7. 魔棒工具,在需要去掉的点一下, ...
- robotframwork接口测试(三)—HttpLibrary.HTTP安装
1. 安装: 1)可以用命令:pip install robotframework-httplibrary(或pip install --upgrade robotframework-httplib ...
- PAT——1027. 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两 ...
- 404 Note Found 队 Alpha8
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- LINUX升级PHP版本至5.4.26
参考网址:http://www.itbulu.com/wdcp-php54.html文件:链接:http://pan.baidu.com/s/1slbbNxr 密码:s0yb 1.运行下载PHP版本文 ...
- vue中使用swiper并自定义分页器样式
一,安装swiper 执行命令 npm install vue-awesome-swiper --save 二,引入swiper import {Swiper} from "vue-awes ...