逆向与BOF基础——注入shellcode并执行&Return-to-libc
逆向与BOF基础——注入shellcode并执行
准备阶段
下载安装execstack.

本次实验实验的shellcode是心远的文章中生成的代码,即
\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\为减少实验难度,设置堆栈可执行,并关闭地址随机化。

实验过程
1.构造注入的payload,格式为nop(即\x90)+shellcode+返回地址。


2.gdb调试该段代码,判断返回地址应在哪里。



3.跳坑,进去体验一下。




4.重新开始时,使用了另一种构造注入payload的方法,anything+retaddr+nops+shellcode,只要返回地址在该范围内,最终都会滑行到shellcode上。


5.成功。

Return-to-libc
准备工作
- 执行安装可用于编译32位程序的东西的命令。
sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386
sudo apt-get install lib32readline-gplv2-dev
- 进入32位Linux环境,使用bash。

攻击漏洞程序并获得root权限
关闭堆和栈初始地址的随机化。
用zsh代替/bin/bash

编写漏洞程序,保存在/tmp目录下

编译该程序,使用“栈不可执行”,设置SET-UID

编写读取环境变量的程序并编译


编写攻击程序,将其放在/tmp下

使用获取环境变量的程序取得BIN_SH 的地址

使用GDB获取system和exit的地址

修改攻击程序,将取得的地址填入相应的位置,重新编译。

运行攻击程序和漏洞程序,获得root权限。

将/bin/sh 重新指向/bin/bash(或/bin/dash)
指向/bin/bash

指向/bin/dash

与缓冲区溢出漏洞实验的异同
- 相同之处:利用漏洞来获得对被攻击者的权限,都需关闭地址随机化。
- 不同之处:缓冲区溢出需用shellcode的地址来覆盖程序的返回地址,使漏洞程序去执行栈中的shellcode;而return-to-libc是漏洞程序调转已编好的代码实现攻击。
逆向与BOF基础——注入shellcode并执行&Return-to-libc的更多相关文章
- 逆向与Bof基础
一逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含 ...
- 20145237 实验一 逆向与Bof基础
20145237 实验一 逆向与Bof基础 1.直接修改程序机器指令,改变程序执行流程 此次实验是下载老师传给我们的一个名为pwn1的文件. 首先,用 objdump -d pwn1 对pwn1进行反 ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
- 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础
20145203盖泽双 <网络对抗技术> MAL_逆向与Bof基础 实践目标 (1)我们要通过修改程序代码,使得程序运行其自身中本不该运行的代码片段. (2)在这里,我们有一个名为2014 ...
- 20165310 NstSec2019 Week3 Exp1 逆向与Bof基础
20165310 NstSec2019 Week3 Exp1 逆向与Bof基础 一.实验内容 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用fo ...
- 20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础
20155201 李卓雯 <网络对抗技术>实验一 逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,f ...
- 20145236《网络对抗》Exp1 逆向及Bof基础
20145236<网络对抗>Exp 1逆向及Bof基础 一.实践目标 运行原本不可访问的代码片段 强行修改程序执行流 以及注入运行任意代码. 二.基础知识及实践准备 理解EIP寄存器及其功 ...
- 20155209林虹宇逆向及Bof基础实验报告
20155209林虹宇逆向及Bof基础实验报告 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符 ...
- 20155210 实验一 逆向与Bof基础
20155210 实验一 逆向与Bof基础 实验内容 1.直接修改程序机器指令,改变程序执行流程 下载目标文件pwn1,反汇编 利用objdump -d pwn1对pwn1进行反汇编 得到: 8048 ...
随机推荐
- HDU 2819 - Swap - [二分图建模+最大匹配]
题目链接:https://cn.vjudge.net/problem/HDU-2819 Given an N*N matrix with each entry equal to 0 or 1. You ...
- Python:fromkeys()方法
简介 Python 字典(Dictionary) fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值. 语法 fromkeys()方法语法: ...
- 没有动态库链接:可执行的文件大小一个就有几百兆 Dynamic-Link Libraries
dynamic link library Dynamic-Link Libraries (Windows) https://msdn.microsoft.com/en-us/library/windo ...
- centos source install
CentOS Kernel Source Install Mar 12th, 2012 | Comments CentOS kernel source install, first off if yo ...
- 数据库管理系统的ACID特性
数据库管理系统(DBMS)的事务都遵循着四种标准规格的约定.将这四种特性的首字母结合起来就统称为ACID特性.这些约定是所有DBMS都必须遵守的规则. 原子性 原子性是指在事务结束时,其中所包含的更新 ...
- JS 防止表单重复提交的方法
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: <script language="”JavaScript”"> var checkSubmi ...
- Ancient Go---hdu5546(dfs爆搜CCPC题目)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5546 题意就是两个人下围棋,问在下一颗x是否能杀死o,'.'是空位子: 枚举所有的点,判断是否合法即可 ...
- git vim 编辑器基本操作
用 git 命令行提交文件时,默认使用 vim 编辑器,基本操作: 按 a, i 或 o 进入编辑模式 按 ESC 进入操作模式 在操作模式下,:wq 为写入退出,:q! 不保存退出
- SeaJS 与 RequireJS 的差异对比
这篇文章主要介绍了SeaJS 与 RequireJS 的差异对比,本文主要对CMD规范和AMD规范的弊端做了对比,并做出了一个总结,需要的朋友可以参考下 “历史不是过去,历史正在上演.随着 W3C 等 ...
- latex 转word
1:下载pandoc软件,支持多种文件格式互转. http://www.pandoc.org/installing.html#windows 2:下载zip包,解压,并将含有pandoc.exe的目录 ...