plaidctf-2016 Pwn试题小结
2016-11-21 22:46
281 查看
回顾了一下今年plaidctf Pwn部分的题目,感觉还是蛮有意思的,值得研究一下。
这道题的所有代码就只有这么多,并不存在我们通常认识的漏洞,此题的考点是位翻转的利用
buf是栈上空间,简单的来说就是获取一个整数,然后把这个数作为地址去做一个位运算。有趣的是在位运算之前对地址增加w权限,运算之后又关闭w权限。
由这个权限变化我首先想到的就是对指令进行写操作,因为一般来说没有写权限的地址太少了,题目特意给了写权限就是让我们去写指令。其中对EIP的劫持也很有趣,需要对opcode有比较深入的了解。
具体的利用步骤参见:http://r0p.club/2016/butterfly/
1.unix_time_formatter-76
最简单的一道题,考点是UAF。说是UAF但是其实根本就不算是真正的UAF利用,无非就是对释放的内存块进行同大小的占位。因为程序中会把内存块的内容作为system函数的参数,所以只要重新占位并写入/bin/sh就可以了,这道题还是相当简单的。2.butterfly-150
这道题比较有趣。详细的看了一下。int __cdecl main(int argc, const char **argv, const char **envp) { setbuf(_bss_start, 0LL); puts("THOU ART GOD, WHITHER CASTEST THY COSMIC RAY?"); if ( fgets(&buf, 50, stdin) ) { v4 = strtol(&buf, 0LL, 0); v5 = v4; v6 = v4 >> 3; bianhuan = (v4 >> 3) & 0xFFFFFFFFFFFFF000LL; if ( mprotect((void *)bianhuan, 4096uLL, 7) ) { perror("mprotect1"); } else { v3 = 1; *(_BYTE *)v6 ^= 1 << (v5 & 7); if ( mprotect((void *)bianhuan, 0x1000uLL, 5) ) { perror("mprotect2"); } else { puts("WAS IT WORTH IT???"); v3 = 0; } } } }
这道题的所有代码就只有这么多,并不存在我们通常认识的漏洞,此题的考点是位翻转的利用
buf是栈上空间,简单的来说就是获取一个整数,然后把这个数作为地址去做一个位运算。有趣的是在位运算之前对地址增加w权限,运算之后又关闭w权限。
由这个权限变化我首先想到的就是对指令进行写操作,因为一般来说没有写权限的地址太少了,题目特意给了写权限就是让我们去写指令。其中对EIP的劫持也很有趣,需要对opcode有比较深入的了解。
具体的利用步骤参见:http://r0p.club/2016/butterfly/
相关文章推荐
- TU-ctf-2016 pwn woO 分析记录
- volga-ctf-quals-2016 pwn web_of_scicen_250 writeup
- CTF练习-TU-CTF-2016 pwn BBYS-first-elf-25 记录
- CTF练习 TU-ctf-2016 pwn woO-50
- PlaidCTF CTF 2015 pwn160
- ZCTF2015 pwn试题分析
- 2016普级组模拟试题(20161114) Closest
- [无视][mark]NOIP2016初赛试题及答案
- 2016 软件测试大赛预赛小结
- SSL2542 2016提高组模拟试题 皮皮(并查集)
- TWCTF 2016 (Tokyo Westerns CTF ) WEB WriteUp
- 老鼠走迷宫问题(2016百度机试题)
- 一道ctf pwn 的思路以及解法
- 弱校软件构件与中间件技术试题(2016)
- 2016华为机试题(java版):两个大数相减的程序(运行成功)
- 【2016】10月小结---荒芜的一月
- RCTF2015 pwn试题分析
- 2016 icectf dear_diary wp
- 0ctf-2016 pwn-warmup writeup
- NOIP2016小结