jarvisoj_level6_x64
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x3ff000)
64位,没开pie
在程序开始的时候,建了一个chunk,用于存放申请chunk的指针,size和flag值(检测用)
int ADD()
{
__int64 v0; // rax
int i; // [rsp+Ch] [rbp-14h]
int v3; // [rsp+10h] [rbp-10h]
void *v4; // [rsp+18h] [rbp-8h]
if ( *(_QWORD *)(BSSPTR + 8) < *(_QWORD *)BSSPTR )
{
for ( i = 0; ; ++i )
{
v0 = *(_QWORD *)BSSPTR;
if ( i >= *(_QWORD *)BSSPTR )
break;
if ( !*(_QWORD *)(BSSPTR + 24LL * i + 16) )
{
printf("Length of new note: ");
v3 = READ();
if ( v3 > 0 )
{
if ( v3 > 4096 )
v3 = 4096;
v4 = malloc((0x80 - v3 % 0x80) % 0x80 + v3);
printf("Enter your note: ");
READ_((__int64)v4, v3);
*(_QWORD *)(BSSPTR + 24LL * i + 16) = 1LL;

文章详细描述了一个64位程序的内存管理机制,涉及chunk分配、栈溢出防范、内存泄漏利用以及通过UAF和修改got表实现系统调用的攻击过程。
最低0.47元/天 解锁文章
782

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



