Web手,想要拓展下知识面,整理分享以下近期工具安装记录,转载还请注明来源
换源
建议先换源
配置python2.7
版本
在做pwn
相关工作时,我们最常用的Python版本就是2.7版。
安装Python尽量使用aptitude
,他相对apt
的优势在于能够更好的处理依赖问题。
sudo apt-get install aptitude
sudo aptitude install python2.7
补充:相对apt
,此工具还可以进行install
, remove
, reinstall
,并可以自动的处理依赖。
使用update-alternatives
切换Python
版本
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 100
update-alternatives --install /usr/bin/python python /usr/bin/python3.8 200
update-alternatives --config python
1
安装对应版本的pip
和setuptools
get-pip.py
是一个引导脚本,允许用户安装pip
、setuptools
,并在Python环境中使用这些工具。
原理是:get-pip.py
捆绑了一个带有少量粘合代码的PIP副本,且自动识别Python版本。这个粘合代码来自templates/目录。
// 下载get-pip脚本[直接下载有时会失败],建议访问网址手动复制粘贴
curl https://bootstrap.pypa.io/2.7/get-pip.py -o get-pip.py
// 使用get-pip安装特定版本的pip,注意,需要使用对应版本的python运行,如安装python2.7要先修改python为2.7版本。
python get-pip.py
安装Pwntools
# 可能出现缺包情况,可尝试自行pip安装补全
pip install pwntools
# 备选方案,仅在pip完,出现缺包以外情况时使用。
git clone https://github.com/Gallopsled/pwntools.git
cd pwntools
sudo python setup.py install
验证安装效果
# 成功引入即可,可以找题跑一跑
import pwn
安装LibcSearcher
libc
库版本辅助库
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py install
扩展GDB的插件和切换(pwndbg/peda/gef)
GDB 是GNU提供的一款命令行调试器,有用强大的调试功能,并且对于含有调试符号的程序支持源码级调试,同时支持使用Python语言编写拓展,一般用到的扩展插件为gdb-peda、gef或pwndbg。
GDB
有几种常用的插件,但是不兼容,需要切换使用。
pwndbg
适合调试堆。peda
适合查看字符串。
pwndbg
### pwndbg
$ git clone https://github.com/pwndbg/pwndbg ~/peda
$ cd pwndbg
$ sudo ./setup.sh
# 因为peda和pwndbg不相互兼容,如果为自动写入.gdbinit,要手动添加,并在需要时注释切换
$ vim ~/.gdbinit
source ~/pwndbg/gdbinit.py
# 调用验证
gdb
pwndbg>
peda
### peda
$ git clone https://github.com/longld/peda.git ~/peda
$ echo "source ~/peda/peda.py" >> ~/.gdbinit
# 注释~/.gdbinit的pwndbg,调用验证
$ gdb
gdb-peda>
gef
### gef,请保证网络连接正常,否则文件可能为空
$ wget -O ~/.gdbinit-gef.py -q http://gef.blah.cat/py
$ echo source ~/.gdbinit-gef.py >> ~/.gdbinit
# 调用验证
source ~/.gdbinit-gef.py
gdb
gef >
安装定理证明器Z3
z3是由微软公司开发的一个优秀的SMT求解器(也就定理证明器),它能够检查逻辑表达式的可满足性。
# 为Python安装
pip install z3-solver
# 验证
from z3 import *
x = Int('x')
y = Int('y')
s = Solver()
s.add(x + y > 3, x > 1, y > 1)
print(s.check())
print(s.model())
-------------------------------------------------其他待探索-----------------------------------------------