linux-exp 工具+小技巧

# 工具篇 #
pwntools ,gdb-peda ROPgadget-tool 、 EDB
## pwntools获取、安装和文档帮助 ##

- pwntools: github可以搜索到 https://github.com/Gallopsled/pwntools
- 安装 pwntools 依赖: (最好先apt-get update下)`$ apt-get install python2.7 python2.7-dev python-pip `
- 安装pwntools `$ pip install pwntools` 可以参考 https://pwntools.readthedocs.io/en/latest/install.html
- 安装出错:我安装的时候出错了就这么弄的: 下载github 中的压缩包,解压,执行 `pip install -e .`
- 测试是否安装成功: python > from pwn import * 不报错就是ok了,可以试下命令 hex('abcd')

## gdb-peda 的获取、安装##

- github上搜索就可以找到 https://github.com/longld/peda
- 下载zip包,解压 执行 ` echo "source ~/peda/peda.py" >> ~/.gdbinit `
- 验证: gdb 随便调试个程序 会出现红色的 $gdb-peda:

## ROPgadget tools ##
- 安装 和 帮助文档 https://github.com/JonathanSalwan/ROPgadget
- 排错, 要先更新 `sudo pip install capstone` 2 `pip install ropgadget` 3 测试`ROPgadget -v `

## EDB debugger ##
- 在这里获取 https://github.com/eteran/edb-debugger
- 依赖 qt >= 4.6 : http://www.qt.io/download-open-source/ 下载离线安装包xx.run 下载后运行自动安装
- Boost >= 1.35 `apt-get install boost1.5 `
- Capston >= 3.0 `sudo pip install capstone` 更新下`sudo pip install capstone --upgrop`
- 以上折腾都不能正确安装 EDB;kali 上集成了直接kali吧

# gcc 编译选项 #

- 关闭栈溢出保护 `gcc -fno-stack-protector`
- 开启栈执行 `gcc -z execstack `

# linux系统安全特性 #

- 关闭alsr `echo 0 > /proc/sys/kernel/randomize_va_space'

- sysctl -w kernel.randomize_va_space=0

# linux 系统对调试的支持 #
- 开启 core dump `ulimit -c unlimited `
- 设置 core dump 的生成路经 `echo "/tmp/core.%t" > /proc/sys/kernel/core_pattern'

 

# 常用的测试 linux shellcode #

- 参考文件夹内

# 编写poc 小技巧 #

- 对于 read scanf 读取输入的这种编写exp,可利用 pwntools 和 zio 参看 pwntools模板
- 对于利用 argv这种命令行作为输入的可以利用这样 ` python -c "print('a'*96+'\x00\xa0\x04\x08'+'\n'+'134514147\n')" | ./passcode `

- r <<< $(python -c 'print "A"*256')


# 排错 #

- -ldl 指示连接器连接一个库。这个库里包含了 dlopen, dlsym 等等的函数。也就是说,是支持“在运行时,显示加载使用动态连接库”的函数库。相关的头文件是 dlfcn.h

#其他#

- 将命令行转为TCP服务 socat TCP-LISTEN:5353,reuseaddr,fork EXEC:./app

 

 

 

posted @ 2016-06-01 10:19  m4sterx  阅读(1975)  评论(0编辑  收藏  举报