20145202 《网络对抗技术》 PC平台逆向破解

准备工作

先将环境设置为:堆栈可执行、地址随机化关闭
参考http://git.oschina.net/wildlinux/NetSec/blob/master/ExpGuides/Bof_从缓冲区溢出说起.md?dir=0&filepath=ExpGuides%2FBof_从缓冲区溢出说起.md&oid=72b34d542ae4c73c64c2796d28dbc2d9289c0e2b&sha=4f3790a4c0593c3183871a5e65e20bebd6fbda1e

以 anything+retaddr+nops+shellcode 的结构来构造,先估计返回地址所在位置,并且找到 shellcode 所在地址

要验证返回地址所在位置以及找到 shellcode 地址,需要使用GDB调试

再找到正在执行的进程号

进入GDB,联系上该进程号

在 ret 处设置断点,接着运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,并由此分析出返回地址位置的正确性以及shellcode的地址

由上图可以看出,shellcode地址为:0xffffd334
继续运行,可以确认返回地址是被我们之前输入\x01\x02\x03\x04所覆盖的:

将返回地址修改为0xffffd334,重新注入。

Return-to-libc 攻击

我先另外添加了一个用户:

进入32位linux环境,将地址随机化关闭,并且把/bin/sh指向zsh

将漏洞程序保存在/tmp目录下:

编译该代码,使用–fno-stack-protector来关闭阻止缓冲区溢出的栈保护机制,并设置给该程序的所有者以suid权限,可以像root用户一样操作:

读取环境变量的程序:

将攻击程序保存在/tmp目录下:

用刚才的getenvaddr程序获得BIN_SH地址:

利用gdb获得system和exit地址:

将上述所找到的三个内存地址填写在20145215exploit.c中:

到这里才发现之前忘了切换用户了,所以又要重新做一遍但是步骤都一样就不再从新写了,结果是成功了。

参考资料:https://git.oschina.net/wildlinux/NetSec/blob/master/ExpGuides/MAL_逆向与Bof基础.md?dir=0&filepath=ExpGuides%2FMAL_逆向与Bof基础.md&oid=bf7c0c8fd8e306ddb9f728b4db42b5efbb00af80&sha=f4a0f4414045ff786a72020586fcf7663dd56f8b

最新文章

  1. Linux终端打印命令使用介绍
  2. 【leetcode】Next Permutation(middle)
  3. LeetCode Power of Three
  4. Oracle不足与MySQL优势
  5. Java虚拟机的功能
  6. SWFUpload接受服务器Action返回的参数
  7. java第六课 oop
  8. 史上最全github使用方法:github入门到精通--备用
  9. 关于memcpy和memmove的一点说明
  10. Uip学习简介及网址
  11. css样式,边界和边框,格式和布局
  12. Android Camera 摄像 demo
  13. 看见的力量 – (I) 解题的思维
  14. 修改vim的颜色主题 及显示行号
  15. eclipse 安装 maven
  16. mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
  17. SpringBoot-将servlet容器变成undertow测试tomcat吞吐量
  18. MySQL:索引
  19. mysql数据具体操作
  20. 广搜 迷宫(zznu 1962)

热门文章

  1. js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
  2. DOS下启动MySQL时输入net start mysql 提示服务名无效的问题
  3. [USACO17JAN]Subsequence Reversal
  4. 百练oj 2815:城堡问题(dfs)
  5. js箭头函数
  6. Promise面试题
  7. 解决问题的思路(如故事版里面有东西,却不见了)(swift里面开发比较多)
  8. Qt学习交流(广告)
  9. django写一个简单的登陆注册
  10. 爬虫——使用BeautifulSoup4的爬虫