ctf pwn 个人经验记录
2017-05-22 16:23
204 查看
前言
记录一下自己在做pwn的过程当中学到的一些东西,以前不知道的东西等等,碰到的坑也会记录在这里,主要目的是帮助自己记录一下经验。
其实每一道题基本上能学到的新东西是有限的,记录下来避免什么时候想不起来。
顺序比较乱,基本上根据我做题的顺序定的,比较随意。
pwn
other place(not from ctf)
多用gdb调试,有思路可以先写出来调试一下看看效果再说遇见pie考虑写malloc_hook,free_hook等,这些与malloc_state相关,也就是需要main_arena
smallbin, largebin等非fastbin在链表为空时指向自己,也就是指向main_arena中,可以用来泄漏main_arena,从而得到libc
hitcon-2016
babyheap
ubuntu 16.04后scanf的缓冲区会使用heap,超过大小的就会放入heap,接下来的scanf会从刚才heap中的缓冲区取
使用read而不是readline的时候很容易因为读取的内容不够(比如最多本来可以读100个,但是我这边
只发了20个字节的时候)导致后面的内容被接上去,也就是两次send在远程只进行了一次read,而本来
想要的是两次read。方法是通过sleep或者raw_input使得不连起来发,隔开就可以了。
漏洞也可能位于输入输出函数
ichunqiu427-2017
smallest
使用srop可以用来更改寄存器的值,从而使得能够控制更多寄存器的值环境变量位于栈顶,其中的字符串也位于栈中,可以用来获取大致的栈位置(比如需要可写地址的时候)
awd-pwn2
awd先补再写expbctf-2017
boj
system函数的参数如果可控,可以通过构造文件名来进行命令注入babyuse
choice等输入可能位于栈上,atoi的时候只需要使用空格隔开,可以通过后面的内容控制参数njctf
vegas
c语言的rand函数是可以预测的,只要和远程时间相同,1秒内同时开始rand的内容是一样的0ctf-2017
EasiestPrintf
IO结构体(stdin, stdout, stderr)在程序关闭的时候会调用一些奇怪的函数,虽然不知道是哪个,但是反正可以试出来。。那么就是可以通过修改IO结构体的虚表,来控制执行流,可以作为能拿到那三个特殊IO结构体位置
的时候,面对PIE的时候的特殊方案。
相关文章推荐
- VS.net 安装包制作 个人经验记录
- CTF练习-TU-CTF-2016 pwn BBYS-first-elf-25 记录
- 接入WebSocket记录 + 一些个人经验
- 最新版的PayPal快速集成方法(个人经验记录)
- linux上使用eclipse开发Jni个人经验记录
- 此地用于记录一些个人经验心得等等,欢迎指正
- TU-ctf-2016 pwn woO 分析记录
- 点滴记录python linux中的个人经验
- 关于cloudstack 个人使用的一些经验记录
- 某个人写的找工作笔试经验,记录一下
- VS.net 安装包制作 个人经验记录
- [iOS] 接入WebSocket记录 + 一些个人经验
- php + mysql 获取数据库中的记录(特别是高效的分页功能) 完全个人经验总结,仅供参考!
- 分享8年开发经验浅谈个人发展经历
- 个人记录-LeetCode 73. Set Matrix Zeroes
- 个人小经验 ---关于PCB板设计1
- Socket经验记录
- Spring-MyBatis整合简单例子及个人的经验杂谈
- 个人记录-LeetCode 21. Merge Two Sorted Lists
- unity个人记录