这个题可真是经典,甚至连方法都是来源于此 看了看 防御全开 看看函数 根据题分析,本题是没有释放功能的,但是如果没有空闲的chunk我们难以获取libc地址 但是如果我们申请的chunk大小比top chunk大,这里需要满足几个条件: topchunk size > MINSIZE(0x10) top chunk inuse位为1 修改
malloc_hook 概述初级必备姿势gyctf_2020_force 常规搭配姿势按需进阶姿势总结 pwn题堆利用的一些姿势 – free_hook 概述 在做堆题的时候,经常会遇到保护全开的情况,其中对利用者影响最大的是PIE保护和Full RELRO,NX保护和栈保护对堆利用来说影响都不大,一般利用也不会
[BUUCTF-Pwn]刷题记录 力争从今天(2021.3.23)开始每日至少一道吧……在这里记录一些当时没做出来的/比较有意思的。 最近更新(2021.4.10) 如果我的解题步骤中有不正确的理解或不恰当的表述,希望各位师傅在评论区不吝赐教!非常感谢! [OGeek2019]babyrop /dev/random和/dev/urandom是u
这题和之前做的一个题很像,但是记不清了,也是分开两块chunk分别存data和操作,印象中是这样,那题也是先申请三个然后释放俩,再申请回来,回来的这个的两部分控制好大小,使得分回来的两块chunk来自刚才free的两块chunk的同一部分,放操作的部分,然后就能改变操作函数了,具体记不清了,反正也
查壳:开了Canary和NX,没开Pie ida查看每个函数的有用的意义(a1==v4) 函数 意义 main 引导进入sub_400D72 sub_400D72 获取输入,长度<12继续 sub_400A7D 获取输入,直到输入为 east 为止才能进行下一个流程 sub_400BB9 获取输入,如果输入的值不是 1 ,那么直接进行下一个流程
查壳,Pie没开,但开了canary和NX,无法直接覆盖返回地址或使用shellcode 逛该ida 发现pwnme是拿到flag的关键 利用printf(%s)的特性可以泄露偏移地址 可以看这个博客学习格式化字符漏洞 得到偏移量为10(数一数)41414141是第几个出现的 编写exp,利用%n修改pwnme的值,由于p32(addr_pwnme)占4
41 [ZJCTF 2019]EasyHeap 保护 菜单堆题。 create 就是平平无奇的申请然后写入东西,地址在bss上面。 没有溢出。 edit这输入要写多少写就行,这就有了堆溢出了。 del 这个函数没啥问题,释放空间后野指针也清掉了。 但是吧,又发现了个这玩意。 那个133t是个后门函数。 所以问题就是
题目其实本身不难,但我太菜了,这种基础题不会写,其次有个疑问就是为什么stdout可以泄露libc,还没有逆过这个函数,所以还不是很清楚 思路 由于没有show函数,所以只能通过stdout来leak libc,而这程序的edit函数有overlap,所以我们可以先把一个chunk放入unsorted bin中 在通过fast bin attac
checksec看防护: 部分rel,说明got劫持可行 create: edit: delete: 题目有后门函数但buu环境无法利用,所以要通过House of Spirit伪造chunk getshell house of spirit原理 house of spirit构造chunk时有几个关键点 1.fake chunk 的 ISMMAP 位不能为1,因为
这两个题目类似,放在一起写。 例行检查 没有pie,got表可写。 程序逻辑 edit功能都存在堆溢出,堆指针都保存在bss段上,可以通过unlink对got表进行读写。本来两个程序都存在后门,但是oj在部署的时候路径有点问题,所以就想办法获取shell。 bamboobox存在show功能,可以泄露libc地址。
目录 利用思路 利用过程 get flag exp 脚本 内容来源 利用思路 由于之前 house of spirit 时候已经逆向分析过,这里不再重复 利用过程 add(0x40,'a' * 8) add(0x80,'b' * 8) add(0x80,'c' * 8) ptr = 0x6020c8 fake_chunk = p64(0) fake_chunk += p64(0x41) fake_chunk
我们拿到一个文件,扔到linux终端里 checksec一下 我们可以看到这是一个开nx了的32位的文件,我们打开x86ida,按f5查看伪代码,可以看到 这个当pwnme=8的时候 flag 就出来了 我们发现 他的上面有一个printf(const char*)v8 正常的应该是printf(’%s",s), 我们当然可以这样写,但是这
ret2text类型 从fflush中获取 “sh” 传参给system即可 脚本如下 from pwn import * r=remote('node3.buuoj.cn',25488) e=ELF('ciscn_2019_ne_5') sys_plt=e.plt['system'] sh_addr=0x80482ea r.recvuntil('Please input admin password:')
test_your_nc 连上即可拿到shell rip from pwn import * context.log_level='debug' #p=process('./17pwn1') p=remote("node3.buuoj.cn","26137") p.recvuntil("please input\n") payload='a'*0xf+'a'*8+p
1、easy_pwn 可以利用的点: __int64 __fastcall sub_E26(signed int a1, unsigned int a2){ __int64 result; // rax if ( a1 > (signed int)a2 ) return a2; if ( a2 - a1 == 10 ) LODWORD(result) = a1 + 1; else LODWORD(result) = a1; return (unsigne
CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文件后,使用file命令查看。 32位的文件,用ida打开,F5查看伪代码。 printf漏洞:https://www.cnblogs.com/cfans1993/articles/5619134.html 思路: 找到pwnme的地址 把pwnme的地址写到s里
use after free 堆!堆!堆! 终于对堆的结构有了一定的了解,开始做堆的题目,恰巧攻防世界xctf中有这么一题可以练练手,还是挺不错的。。。 对于use after free呢,这里有ctf-wiki的学习资料:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/use_after_free-zh/ 写的非常
mary_morton 这道题开启了canary保护,大概说一下题目,就是让你选择漏洞一个格式化字符漏洞还有一个就是栈溢出,这道题思路就是通过格式化字符漏洞泄露出cannary的值,然后进行栈溢出,后门题目已经给了。 来算算偏移量吧,buf为rbp-90h,canary就是v2为rbp-8h,所以偏移量为88h,然后在算
64位程序 #House Of Force 程序逻辑 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 _QWORD *v3; // [rsp+8h] [rbp-18h] 4 char buf; // [rsp+10h] [rbp-10h] 5 unsigned __int64 v5; // [rsp+18h] [rbp-8h] 6 7 v5 = __readfsqwor
64位程序,没开PIE #chunk overlapping #off by one 程序逻辑 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 char *v3; // rsi 4 const char *v4; // rdi 5 char buf; // [rsp+0h] [rbp-10h] 6 unsigned __int64 v6; // [rsp+8