由于有 XCTF-FINAL,所以虽然报了名,但是并没有打这场比赛,XCTF 也是零贡献,什么都不会了只好补一下 DASCTF 的题目,两题都很简单。ticket 可以通过申请释放再申请可以 leak 出 libc 和堆的基址,然后输入在 age 变量处伪造一个 chunk 的地址,利用整数溢出 free 掉这个 chunk,实现 double free,打 malloc_hook 即可#!...
很久之前打的比赛了,由于调试环境没配好,一直没复现这道题,前天突发奇想手动编译了一下 qemu 发现可以调了,所以就复现了一下主要的洞在这里的 switch 中,没有对 v1 进行范围检查,所以输入零就可以不更新 player 信息,实现 double free 和 leak。首先需要 leak,方法是申请一个名字较长的 player,delete 掉,让名字进入 unsorted bin。...
这次 CISCN 可以说是没参赛,只做了分数最低的 pwny,最后 realloc 调 one_gadget 栈的工作也不是我做的(一方面嫌烦另一方面刚准备调学长已经把 exp 写好了)。那题其实就是个脑洞题,没什么难度。channel 还没看,大概就是一个 UAF 和 arm 加 qemu-user 运行免去 leak 的题,之后看心情复现一下吧(arm 的调试仍然不是很会,还需要多学习)...
比赛的时候不知道为什么,一直没想出来,赛后复现一下。本题、本次比赛,最讨厌的地方就是每道 PWN 题都没给 libc,大幅降低了做题体验(好吧还是我太菜了)。其实题目很简单。分析这里的 strcpy 存在一个 off-by-null,所以 off-by-null 下一个 chunk,伪造 prev_size,使前一个 chunk 为 unsorted bin,然后 free 掉那个被 off...
这题没啥意思,就是爆破。由于无法输出任何东西,需要有能代表是正确的标志,可以使用 jmp 0 的方法,如果爆破正确则 jmp 0,否则 jmp 到一个乱七八糟的地方造成段错误,这样通过是否有 got eof 就可以判断了。使用 shellcraft 可以获得 shellcodeshellcode = asm(shellcraft.amd64.syscall('SYS_open',0x1000...