云计算百科
云计算领域专业知识百科平台

buuctf-pwn ciscn_2019_sw_1(32位只有一次格式化机会)题解(学习过程持续更新)

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

可以看到这是一个32-bit的文件,NX保护开启

将文件拖入ida,按F5将汇编代码转换成c语言代码,得到

可以看到明显的printf(&format)格式化字符串漏洞,且只有一次机会,有内置system函数,无“/bin/sh”字符串。我们可以通过改写finif_arrary为main函数地址,从而获得第二次printf的机会,输入"/bin/sh"

思路:第一次改写fini_array为main函数,改写printf@got里的内容为system@plt;第二次输入'/bin/sh'字符串

在ida里收集main,system@plt的地址

得到main_addr = 0x8048534,system_plt=0x80483d0

返回虚拟机

收集fini_array,printf@got的地址

得到fini_arry=0x804979c

gdb pwn

start

got

得到printf@got=0x804989c

./pwn

aaaa.%p.%p.%p.%p.%p

可以看到0x61616161在我们输入aaaa后的第4个参数处

nano exp.py

保存退出

python3 exp.py

ls

cat flag

此题完

赞(0)
未经允许不得转载:网硕互联帮助中心 » buuctf-pwn ciscn_2019_sw_1(32位只有一次格式化机会)题解(学习过程持续更新)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!