Kali操作系统
0x00 Kali下载最新版本安装
这个自行下载吧 Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution。安装教程一大堆,随便搜索就有。
0x01 kali换源
如果你熟悉使用vim的话,你可以直接使用
sudo vim /etc/apt/sources.list
kali下默认安装的文本编辑器是mousepad,所以可以用以下命令换源:
sudo mousepad /etc/apt/sources.list
然后将sources.list原来的文本全部用#注释掉,或者全部删除,之后添加清华大学的镜像源:
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
如下图:
保存退出,然后在命令行执行
sudo apt-get update
等待几分钟就好了。
pip换源
首先你要保证自己已经安装了pip,这个一般是装系统的时候就默认安装好的。
可以使用pip -V来查看pip版本,如下图
临时换源
pip install 你要安装的包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
永久换源(推荐)
由于不仅仅是用户自己会手动安装一些python库,一些shell脚本也会使用pip安装,临时换源不影响shell脚本,所以更推荐永久换源。
# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
# 豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/
# 换回默认源pip config unset global.index-url
附带pip升级教程
python3 -m pip install --upgrade pip
安装pwntools
注意执行完前两步换源操作后再执行这步,否则由于众所周知的原因,下载容易失败。
sudo apt install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential -y
pip3 install --upgrade pwntools
安装完成后在python里边输入:
import pwn
pwn.asm("xor eax,eax")
如果输出'1\xc0'
则表示成功安装pwntools。
不知道咋回事,我在python里直接用from pwn import *不成功,只能import pwn才行。但是在exp.py的文件中使用from pwn import *可以成功。
安装pwndbg
推荐安装pwndbg,不再建议安装peda了,peda没有pwndbg好用。
dep文件安装:不推荐
一般网上安装pwndbg都是用git clone命令,然后cd pwntools....,这样的教程基本上是在Ubuntu下的源码安装,你在Kali下安装会报错packaging<24.0,but you have...之类的错误,然后还有psutil的一个错误。pwndbg安装脚本里边会执行sudo apt update命令,然后你的kali的package版本就变成最新版本的了,所以你即使使用Kali的历史版本也无法安装pwndbg。根本原因是Kali系统使用了一些库比如psutil,这些库对pwndbg来说版本过高,但是由于系统使用了更高版本库,所以你也无法降级安装,也就无法通过源码安装。我试过,源码安装会出现循环依赖的问题。这个pwndbg用源码安装死难安装,有的教程还让你自己编译gdb的,头疼的很。但基本没有什么教程能让你在kali上真正安装上pwndbg的,于是我决定还是得看官方文档啊!
‘
看到一个加粗字体写的Installation on DEB-based Systems (Debian/Ubuntu/Kali):有关键字kali!说明pwndbg是支持kali安装的,只不过是推荐安装发行版而已。
下边使用apt 安装了一个.deb文件,所以我们要先下载这个.deb文件。
上图红色框里就是.deb下载链接点进去,然后将页面最底下有个Assets,选取最新版本的.deb文件。因为我是64位的电脑安装的kali也是64位的所以选的应该是pwndbg_20**.**.**_amd64.deb文件,中间用**代替的是日期,选最近的日期就好。还要注意的是不要下载成arm64了,那CPU指令架构都不一样了,咱们电脑一般都是选amd64的,手机才是arm架构。
pwndbg_2024.02.14.amd64.deb文件的超链接。
下载好后在kali里边,注意换成你自己下载的文件名
apt install ./pwndbg_2024.02.14.amd64.deb
这时候pwndbg就作为一个单独的应用程序看待,而不是一个gbd插件,所以调用pwndbg使用
pwndbg 要调试的程序
使用例子如下图:
这样安装的话直接使用是可以的,但是不能配合pwntools在exp.py文件中使用。所以还是建议在root身份下将/usr/bin/pwndbg和/bin/pwndbg 这两个文件改为gdb。这个方法我没实验,直接改好行不行我没试过,我只是安装完了在bash里用了一下然后就换成portable版本了。
安装portable:推荐
1.下载portable版本:
自己去github下载,右侧有个release,点进去就是下图:
2..使用sudo apt remove gdb卸载原有的gdb。
3.然后使用tar指令解压。我的是解压到了/home/hath/pwndbg文件夹下面。
tar -xvf 你下载文件的名字 -C 要解压的位置
在上图bin文件夹里有一个pwndbg文件,将其重命名为gdb。实际上这个文件是一个shell脚本文件,我们只要稍加修改就能让gdb变成pwndbg。该脚本文件内容如下:
#!/bin/sh
dir="$(cd -- "$(dirname "$(dirname "$(realpath "$0")")")" >/dev/null 2>&1 ; pwd -P)"
export PYTHONHOME="$dir"
exec "$dir/lib/ld-linux-x86-64.so.2" "$dir/exe/gdb" --quiet --early-init-eval-command="set auto-load safe-path /" --command=$dir/exe/gdbinit.py "$@"
脚本十分简单,就是获取了加载路径,然后将加载路径作为启动参数传递给gdb了!我们要修改第二行的dir=“解压路径”。我的电脑就是/home/hath/pwndbg,你的电脑看看你自己解压到哪里了。然后将其复制到/usr/bin和/bin 目录下即可。
我的电脑上该脚本被修改为:
这种方法安装的pwndbg启动时使用gdb启动,也可以在exp.py文件里配合pwntools使用,这是个完美的解决方案!
安装patchelf
你是否还为自己的libc版本与靶机版本或者老师演示的版本不一致而感到困惑,你是否经常发现你找出的libc版本和函数地址和老师给出的教程里的地址不一致?你是否由于和教程不一致的运行环境而导致你无法找到libc进而无法get shell?
你现在需要patchelf
首先给个github的国内镜像源:https://gitclone.com/使用方法是先进入这个网站,搜你要安装的项目名,点复制克隆地址。更直接的是将原本的https://换成https://gitclone.com/ 比如
#原来的git地址
git clone https://github.com/matrix1001/glibc-all-in-one
#镜像的git地址
git clone https://gitclone.com/github.com/matrix1001/glibc-all-in-one
好了,讲完了如何给git换源我们回到正题。预防出错,先安装依赖库:
sudo apt-get install autoconf automake libtool
#推荐直接用apt安装
sudo apt install patchelf
使用方法:
一般题目会给你一个libc文件,直接在bash里运行这个libc文件就能输出一些版本信息。用ldd 运行可执行文件也会打印出这个可执行文件使用到的动态库和链接器。
注意这个截图里的libc是我没有patchelf之前使用的,实际上就是我这个版本kali上的libc文件,为了演示patchelf用法,就将libc的路径由一个链接文件改成一个当前文件夹下的libc。
┌──(hath㉿kali)-[~/…/CTF/stackoverflow/ret2libc/ret2libc3]
└─$ ./libc6_2.38-12.1_i386.so
GNU C Library (Debian GLIBC 2.38-12.1) stable release version 2.38.
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 13.2.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 3.2.0
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.
首先先根据输出的(Debian GLIBC 2.38-12.1)找到对应的ld.so文件,我这个就是系统自带的就不用改了,修改方法是:
patchelf --set-interpreter ld_addr file_name
然后将链接路径修改为自己的libc文件。我们先看看示例程序原来是什么样的:
ldd 可执行文件名
可以看出原来的示例程序是libc.so.6然后一个箭头指向一个绝对路径,也就是说这个libc.so.6是一个链接文件,类似于windows下的快捷方式。我们打算将这个原来的链接文件修改为本路径下的libc6_2.38-12.1_i386.so文件。
我们将libc.so.6称为old_link;将要修改成的libc路径称为new_link 那么使用方式是
patchelf --replace-needed old_link new_link 可执行文件名
如下图:
可以看到patch后的文件已经更换成了本路径下的libc了,并且可执行文件也可以正常运行。
安装IDA
IDA作为静态分析工具是必备的!初步学习只需要装IDA Free版就好了,你也可以自行寻找IDA破解版安装。
Free版下载链接:IDA
下载好后给下载文件添加可执行权限:
chmod 777 ./idafree84_linux.run
然后运行,一步步安装就好。完成后桌面有个图标,双击运行。
交叉编译环境支持
一般安装的kali都是64位的,但是一些pwn题目是32位的,我们想自己编译32位程序的时候会报这个缺少头文件<bits/wordsize.h>的错误。
/usr/include/features-time64.h:20:10: fatal error: bits/wordsize.h: No such file or directory
20 | #include <bits/wordsize.h>
| ^~~~~~~~~~~~~~~~~
实际上是没有支持交叉编译的库,安装一下就好
sudo apt-get install gcc-multilib
checksec
这个是用来检查可执行文件保护措施的,必装软件。
sudo apt install checksec
使用方法:
checksec --file=./main
ROPgadget
这个是搜索可执行文件gadgets的小程序,也是必备,用apt装就行
sudo apt install ROPgadget
版权声明:
本博客为本人原创于博客园,由于担心博客园倒闭,故迁移到CSDN,版权归本人所有,谢绝转载。本人博客园同名文章链接:kali下PWN环境配置 暨pwndbg踩坑 - 24K砖家 - 博客园
另外:为倡导互联网分享精神,本博客供人类免费阅读,但是为防止二道贩子,故不允许分发、转载。