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