摘要: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 setbuf(stdin, 0); 4 setbuf(stdout, 0); 5 alarm(0x1Eu); 6 setup((int)main); 7 阅读全文
posted @ 2020-12-12 10:20 大金刚仔 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 int v3; // ST2C_4 4 void *v4; // ST30_4 5 int v5; // ST38_4 6 char s; // [esp 阅读全文
posted @ 2020-12-10 19:38 大金刚仔 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 char v4; // [rsp+0h] [rbp-10h] 4 5 printf("0x%lx\n", &v4, envp); 6 __isoc99_s 阅读全文
posted @ 2020-12-09 11:01 大金刚仔 阅读(160) 评论(0) 推荐(0) 编辑
摘要: checksec一下,发现所有保护都关闭了。 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 char s; // [esp+1Ch] [ebp-64h] 4 5 setvbuf(stdout, 0, 阅读全文
posted @ 2020-12-08 16:55 大金刚仔 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 char s; // [esp+1Ch] [ebp-64h] 4 5 setvbuf(stdout, 0, 2, 0); 6 setvbuf(_bss_s 阅读全文
posted @ 2020-12-07 21:55 大金刚仔 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 char s; // [esp+8h] [ebp-20h] 4 FILE *stream; // [esp+18h] [ebp-10h] 5 char * 阅读全文
posted @ 2020-12-05 10:58 大金刚仔 阅读(227) 评论(0) 推荐(1) 编辑
摘要: 1 int vuln() 2 { 3 int v0; // ST08_4 4 const char *v1; // eax 5 char s; // [esp+1Ch] [ebp-3Ch] 6 char v4; // [esp+3Ch] [ebp-1Ch] 7 char v5; // [esp+40 阅读全文
posted @ 2020-12-05 10:17 大金刚仔 阅读(124) 评论(0) 推荐(0) 编辑
摘要: IDA打开,发现gets漏洞函数。可以观察到,只要让v5等于11.28125即可获得flag。问题是这里并没有输入v5的语句。 再看第3,4行,发现变量s和v5都是保存在栈中,并且s是用gets来赋值的。 所以到这里思路就很清晰了,用gets漏洞覆盖掉原本是存放v5的栈帧,让v5等于11.28125 阅读全文
posted @ 2020-12-04 11:01 大金刚仔 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 打开IDA观察,存在gets函数。并且有提示sub_40060D这个函数。 观察这个函数,可以发现,是查看flag的。到这里就能够确定思路了,利用gets函数修改返回地址到sub_40060D读取flag就可以了。 在这里可以看到,gets函数是用的v5指针,它的地址是rbp-40h.又因为是64位 阅读全文
posted @ 2020-12-04 10:13 大金刚仔 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 这算是最简单的入门教学题目了。看网上的博客和视频讲解的原理,感觉挺简单的,但是实际自己动手去做的时候还是有一些问题出现,在这里记录一下。 首先打开IDA,找到main函数,和存在漏洞的vulnerable函数。这里的注释意思是,用户数据在栈的ebp-0x10的位置开始存放。 然后我就用gdb动态调试 阅读全文
posted @ 2020-12-03 09:49 大金刚仔 阅读(205) 评论(0) 推荐(0) 编辑