bjdctf_2020_babyrop2

[CTF]bjdctf_2020_babyrop2 格式化字符串漏洞+金丝雀绕过。 出现这种形式的,v2就是canary。 查看他在栈里的位置。 var_8就是canary。 利用格式化字符串漏洞。 %6$p表示输出第六个参数。 发现我们输入的东西在第六个参数的位置。 调试之后发现有一串随机的十六进制数字。这就是canary。由此可见,这个canary在第七个参数的位置。 于是我们先用格式话字符串泄露第七个参数位置上的内容,每一次进行栈溢出的时候把泄露出来的值填入即可。 代码如下: from pwn import * from LibcSearche 阅读详情

环境:WSL2,ubuntu16.04,python2

checksec文件:
在这里插入图片描述

PIE保护没开,构造rop链
存在Canary,需要找出Canary的值才能进行地址泄露

文件拖入ida:
在这里插入图片描述
在gift函数发现printf格式化漏洞,可以利用该漏洞获取Canary的值,但需要找出输入点参数在栈上的相对位置(找偏移量)
由于scanf限制了只能输入6个字符,因此不能用

AAAA %x %x %x.......

来泄露值,改为:

aa%6$p   #6是一步步试出来的,可以从1开始尝试,p是十六进制形式

结果:
在这里插入图片描述
aa(6161),%(25),6(36),$(24),p(70) (16进制asll和小端序)
说明格式化字符串的偏移是6

在gift函数中有:

unsigned __int64 v2; // [rsp+8h] [rbp-8h]

使用gdb调试程序:
在这里插入图片描述
查看stack的情况:
在这里插入图片描述
canary的值位于rbp-0x08处,即rbp-0x08 = 0x20 - 0x08 = 0x18

泄露canary的值:
在这里插入图片描述

泄露puts函数的地址:

payload = (0x20-0x08)*'a'+p64
NSSCTF Pwn [BJDCTF 2020]babyrop2 题解 可以看到canary距离输入的字符串8字节 离rbp也是8个字节。得到了canary之后,就是ret2libc的流程了。下载 checksec exeinfo。可以看到有格式化字符串漏洞和栈溢出漏洞。64位 开启了canary和NX保护。利用格式化字符串漏洞泄露canary。canary的偏移为7;IDA64 查看函数。 阅读详情

相关推荐

PCL读取点云数据报错:Failed to find match for field ‘x‘/ ‘y‘/ ‘z‘.

原因:使用matlab生成的pcd文件,点云数据是双精度类型,pcl处理的点云数据是单精度类型。解决方案:使用matlab生成的点云坐标单精度化,然后在生成点云加以存储。

little_white138的博客 849

bjdctf_2020_babyrop2--buuctf

非常规格式化字符串泄露

2301_81060697的博客 653

Cadence17.2 > OrCAD Capture CIS > 设计规则检查(Design Rule Check)DRC学习记录详解

选中设计完成的DSN文件,选择Tool->Design Rule Check,弹出下面对话框,详解如下。 一、Design Rule Check对话框选项详解 Design Rules Options tab Set the scope, mode and type of design rule (electrical and / or physical) test options for the design rules check. 为

DL_62532的专栏 1万+

bjdctf-2020-babyrop2

首先需要注意要获得 canary 的值,然后才能进行接下来的一系列操作格式化字符串漏洞需要大胆地调试才能得到实际的偏移,方便我们利用。

m0_73743784的博客 937

bjdctf_2020_babyrop2-fmt-leak canary

这使得参数可以输出多次,使用多个格式说明符,以不同的顺序输出。本地libc下载:https://github.com/Yeuoly/buuctf_pwn/tree/master/bjdctf_2020_babyrop2。printf(“%p”, a) 用地址的格式打印变量 a 的值,printf(“%p”, &a) 打印变量 a 所在的地址。思路:aa相当于定位标识,format在格式化假参数6的位置,所以构造成。2,IDA静态分析,查看可以泄露canary的地方,否则只能爆破了。canary的位置:即。

个人笔记 696

[BUUCTF]PWN——bjdctf_2020_babyrop2

bjdctf_2020_babyrop2 附件 步骤: 例行检查,64位程序,开启了NX和canary保护 2. 试运行一下程序,看看大概的情况 提示我们去泄露libc 3. 64位ida载入,从main函数开始看程序 init gift 第9行的printf函数存在格式化字符串漏洞,可以利用这点去泄露canary的值 vuln buf参数存在溢出漏洞,只要绕过了canary就能够利用ret2libc的方法获取shell 利用思路: 利用格式化字符串泄露出canary的值 利用溢出漏洞,

mcmuyanga的博客 1919

bjdctf_2020_babyropbjdctf_2020_babyrop2(格式化字符leak)

bjdctf_2020_babyrop 先checksec 打开ida正常查看函数 打开init函数发现puts函数 然后进入vuln函数 存在栈溢出 没有看到后门函数应该是libc leak+rop 代码如下 from pwn import* from LibcSearcher import* p=remote('node3.buuoj.cn',29901) #p=process('') elf=ELF('bjdctf_2020_babyrop') puts_got=elf.got['puts'] p

beaster1的博客 742

BUUCTF bjdctf_2020_babyrop 1 和 2

这两个rop其实是差不多的,第二个比第一个多了一个canary 先看一下第一个 bjdctf_2020_babyrop1 init里面两个puts vul里面一个puts一个read 没有system和binsh ,要泄露libc,但是现在没有可以控制的输出手段,,所以要通过read,,覆盖返回地址为puts,,构造参数让puts输出libc的函数 这是网上别人的做法,,首先到pop rd...

BengDouLove的博客 1837

[BUUCTF-pwn]——bjdctf_2020_babyrop2

[BUUCTF-pwn]——bjdctf_2020_babyrop2 题目地址:https://buuoj.cn/challenges#bjdctf_2020_babyrop2 还是先checksec一下。开启了canary 在IDA中,一看发现思路很清楚呀 思路 给的提示好明显, 第一个函数给你提示,泄露libc 第二个格式化字符串漏洞,泄露canary 第三个函数栈溢出,有了canary和puts函数,我们就可以泄露出libc,进而构造获得shell的rop链 exploit from p

Y_peak的博客 424

[BJDCTF 2020]babyrop2

本题只做简单介绍,不详细概述了,具体分析可以参考我的上一篇文章[2021 鹤城杯]littleof。

2403_88369859的博客 182

BUUCTF PWN 36、bjdctf_2020_babyrop2 wp

存在格式化字符串漏洞,基本确定可以通过该漏洞泄露Canary的地址后修改Canary的值,进而通过ret2libc实现攻击。可以发现,程序在我们输入%6$p后显示了我们输入的格式化字符串,所以确定偏移为6,由于程序只允许我们输入6字节的内容,所以通过%p%p%p%p的方式就行不通了。输入%7$p之后发现泄露出了一个和Canary很像的东西(以00结尾)之后泄露了Canary对应的地址后,我们可以将Camary的值修改。这里,我们只能通过%n$p的方法实现偏移的查询。开启了Canary保护,

2503_93690490的博客 458

【BUUCTF】bjdctf_2020_babyrop2

【BUUCTF】bjdctf_2020_babyrop2 有canary ida看下程序 有格式化漏洞,但有6格宽度限制 有栈溢出 思路:这题靠格式化字符串漏洞泄露出canary的地址 然后栈溢出,ret2libc 泄露方法: 一次一次试过去,找到我们输入的位置的偏移 然后这题里偏移+1就是canary了 然后就能把canary带出来,canary每次运行都不一样 所以要实时接收 一个程序不同函数的canary好像都相同 特别提醒自己在接收环节的处理 exp: from pwn import*

m0_51251108的博客 542

bjdctf2020 babyrop2

from pwn import * p = process('bjdctf_2020_babyrop2') libcelf = ELF('/lib/x86_64-linux-gnu/libc.so.6') poprdiret = 0x0000000000400993 main = 0x00000000004008DA pltputs = 0x0000000000400610 gotputs = 0x0000000000601018 p.sendlineafter("I'll give u some gif

pondzhang的专栏 377

bjdctf_2020_babyrop2 1

64位,开了canary保护。

weixin_74861133的博客 1554

BUUOJ PWN bjdctf_2020_babyrop2

开启的安全机制 main gift 利用格式化字符串泄露canary vuln 栈溢出泄露libc 栈溢出执行system(“bin/sh\x00”) scanf允许输入6字节,输入参数,输出偏移为6的地址,canary的偏移就为7 这样输入%7$p就可以泄露canary EXP from pwn import * from LibcSearcher import LibcSearcher p = remote("node3.buuoj.cn",27004) elf = ELF("./bjdc

weixin_50287973的博客 331

BUUCTF-bjdctf_2020_babyrop2-WP

64位,NX和canary保护。

Rt1Text的博客 933

HYPACK_2016_Setup_02_11_V16.0.1.0版破解与中文语言资源包更新(首次完整翻译资源包)

HYPACK_2016_Setup_02_11_V16.0.1.0版破解与中文语言资源包,首次完整翻译资源包,独家自行翻译,翻译一定有不准确之处望反馈,安装文件为: HYPACK_2016_Setup_02_11.exe ,安装后不运行HYPACK_2016, 拷贝补丁破解文件包里的所有文件到安装后的目录下,(含完整中文化资源) ,如D:\HYPACK 2016。

上一篇: BUUCTF----jarvisoj_level3_x64
下一篇: BUUCTF----cmcc_simplerop
12Shen
博客等级 码龄11年 5粉丝 22原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值