1.checksec

32位的堆题,只开了一个保护,应该很简单,不会很难
2.IDA

还给了bin/sh字符串,直接返回到0x8048945利用就行
add()函数
int add_note()
{
int result; // eax
int v1; // esi
char buf[8]; // [esp+0h] [ebp-18h] BYREF
size_t size; // [esp+8h] [ebp-10h]
int i; // [esp+Ch] [ebp-Ch]
result = count;
if ( count > 5 )
return puts("Full");
for ( i = 0; i <= 4; ++i )
{
result = *((_DWORD *)¬elist + i);
if ( !result )
{
*((_DWORD *)¬elist + i) = malloc(8u);
if ( !*((_DWORD *)¬elist + i) )
{
puts("Alloca Error");
exit(-1);
}
**((_DWORD **)¬elist + i) = print_note_content;
printf("Note si

文章详细分析了一个32位的堆栈溢出题目,只开启了一项保护,描述了如何通过IDA分析找到bin/sh字符串,并利用0x8048945地址实现shellcode执行。程序中存在使用free后未置NULL的问题,导致了Use-After-Free漏洞。通过编写EXP来释放堆块并重新利用,最终触发shell。
最低0.47元/天 解锁文章
388

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



