Home

网鼎杯 pwn 部分wp

网鼎杯 pwn部分wp 菜的不行的我就做出来了一道题。。。而且虚拟机版本太低环境变量还不一样,远程跑不了。。 1.babyheap 比赛的时候没做出来,后来看了swing大佬的解题才豁然开朗 程序分析: 每次只能申请一个0x30大小的堆块,很难搞 unsigned __int64 add() { unsigned int v1; // [rsp+Ch] [rbp-24h] char s; // [rsp+10h] [rbp-20h] unsigned __int64 v3; // [rsp+28h] [rbp-8h] v3 = __readfsqword(0x28u); printf("Ind...

Read more

ret2dlrsvl

ret2dl_resolve 学习 补习了一下栈的知识,看了一下最难的利用方式,发现还是有好多要学习的地方 ret2dlresolve主要就是在没有libc的时候,利用动态延迟绑定来进行利用的一种手法 总体来说比较麻烦,需要阅读源码理解 这里写一下总体的思路 首先程序调用系统函数的时候调用系统函数时先找plt,plt里面有一个偏移的index,之后跳到got表中执行,在这里会进行一堆操作,而且参数是基于栈传递的,这就说明如果我们控制了栈内的参数就可以在调用系统函数时做文章 这里贴一个参考链接 漏洞利用方式主要就是: 1.控制eip为PLT[0]的地址,只需传递一个index_arg参数 2.控制index_arg的大小,使reloc的位置落在可控地址内 3.伪造reloc的内容,使...

Read more

强网杯opm

opm 强网杯的一道题目当时没做出来。。。 看着像一个堆题目其实是道栈溢出题目,涉及到堆的知识比较少 唯一的技巧点在于巧妙地利用局部写 int (__fastcall **add())(__int64 a1) { _QWORD *v0; // rbx __int64 v1; // rbx size_t v2; // rax __int64 v3; // rbx char s[128]; // [rsp+0h] [rbp-1A0h] __int64 addr_of_struct[16]; // [rsp+80h] [rbp-120h] __int64 addr_of_name[17]; ...

Read more

fastbinattack的一种花式玩法

offbynull + unsortedbinattack + fastbin attack + main_arena attack 这个题目就是我一星期没睡好觉的罪魁祸首 在七夕节这天我终于弄懂了!!!!!!! while ( 1 ) { choices(); __isoc99_scanf("%d", &v3); switch ( v3 ) { case 2: delete(); break; case 3: show(); break; ...

Read more

一道很简单的pwn

main 保护除了nx都没有开 典型的栈溢出题目 溢出处主要是 000000000000000A buf db 10 dup(?) ; base 10 +0000000000000000 s db 8 dup(?) +0000000000000008 r db 8 dup(?) 还有这里 puts("stack:"); return read(0, &buf, 0x20uLL); 主要就是溢出的字节数太少了 可以选择栈转移pivot或者别的奇技淫巧 这里有一个很好的技巧 利用的数rbp字段每次都会保存 具体payload如下: ...

Read more

noleak

house of roman 题目为xman选拔赛 Noleak 当时没做出来,今天有时间看了下wp 题目主要是利用了aslr的低地址随机化程度不高,利用局部写可以得到一些我们想要的值, 题目中的漏洞很明显,一个是delete函数没有对指针清零,另一个就是update函数可以越界写 主要的难点就是没有printf之类的函数,不能泄露地址 void delete() { unsigned int v0; // [rsp+Ch] [rbp-4h] say("Index: ", 7u); v0 = getinput(); if ( v0 <= 9 ) free(heaplst[v0]); // did...

Read more

两道比较简单的堆题目

secret garden 很水的一道堆题 没啥好说的,主要就是uaf int sub_DD0() { int result; // eax _DWORD *v1; // rax unsigned int v2; // [rsp+4h] [rbp-14h] unsigned __int64 v3; // [rsp+8h] [rbp-10h] v3 = __readfsqword(0x28u); if ( !flower_count ) return puts("No flower in the garden"); __printf_chk(1LL, "Which...

Read more

RCTF2018部分wp

RCTF2018 1.rnote3 选单程序,保护全开, 程序的漏洞点有以下两个: edit函数: unsigned __int64 sub_102D() { signed int i; // [rsp+4h] [rbp-1Ch] __int64 addr; // [rsp+8h] [rbp-18h] char s1; // [rsp+10h] [rbp-10h] unsigned __int64 v4; // [rsp+18h] [rbp-8h] v4 = __readfsqword(0x28u); addr = 0LL; printf("please input no...

Read more