| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【攻防世界pwn-level3】 -> 正文阅读 |
|
[系统运维]【攻防世界pwn-level3】 |
下载文件后首先查看保护,发现可以进行栈溢出攻击 将文件拖入32位ida 进入vulnerable_function后,发现了read处有栈溢出漏洞 在查看代码后,发现没有提供system和bin/sh,但是由于给了libc,所以可以找到libc的偏移量,然后计算出system和bin/sh的加载地址。 对于plt表,got表,实际加载地址,我是这么理解的:通过elf.plt['write']获取到的是write在plt表中的地址1,这个地址1上存放的实际内容是write在got表的地址2,而这个地址2存放的是lib中write的实际加载地址3。 对于libc的加载而言,通过elf获取的地址并不是真实加载的地址,这个地址存在一定的偏移量,所以就通过偏移量 = 实际加载地址 - elf获取的write地址,从而获取system的实际加载地址 ?所以我们需要溢出两次,第一次溢出时,跳倒write函数,将write的实际加载地址打印出来,然后计算偏移量,得到system和bin/sh的实际加载地址,然后在第二次溢出时调用system。 第一次调用的栈: ?第二次调用的栈: 编写攻击脚本: ?
?发起攻击: ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 5:40:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |