1.checksec+运行

除了PIE,其它保护全开,规矩的堆菜单
2.64位IDA
1.ADD
{
int i; // [rsp+8h] [rbp-28h]
int v2; // [rsp+Ch] [rbp-24h]
char buf[24]; // [rsp+10h] [rbp-20h] BYREF
unsigned __int64 v4; // [rsp+28h] [rbp-8h]
v4 = __readfsqword(0x28u);
if ( dword_60204C <= 10 ) //全局变量
{
puts("Please input the length of message:");
read(0, buf, 8uLL);
v2 = atoi(buf);
if ( v2 <= 0 )
{
puts("Length is invalid!");
}
else
{
for ( i = 0; i <= 9; ++i )
{
if ( !*(_QWORD *)&dword_602060[4 * i + 2] )
{
dword_602060[4 * i] = v2;
*(_QWORD *)&dword_602060[4 * i + 2] = malloc(v2);
puts("Please input the message:");
read(0, *(void **)&dword_602060[4 * i + 2], v2);
++dword_

本文详细分析了一个C程序中存在Double Free漏洞的代码,并探讨了如何利用这个漏洞通过设置malloc_hook和_free_hook来执行任意命令。在无法直接利用got表的情况下,通过操纵内存chunk并修改_free_hook,最终实现执行/bin/sh。文章还提供了完整的EXP代码来演示攻击过程。
最低0.47元/天 解锁文章
468

被折叠的 条评论
为什么被折叠?



