PWN环境配置

news2024/11/23 15:19:05

虚拟机安装

  • 镜像下载网站(http://old-releases.ubuntu.com/releases/)
  • 虚拟机建议硬盘 256 G 以上,内存也尽量大一些。硬盘大小只是上界,256 G 不是真就占了 256G,而后期如果硬盘空间不足会很麻烦。
  • lsb_release -a查看版本
  • 更换 ubuntu 镜像源 (https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/),建议先在 系统设置 → Software & Updates → Download from → 选择国内服务器例如阿里云 (貌似不这样后续换源会出错),然后再 sudo vim /etc/apt/sources.list 将镜像源中不高于当前系统版本的镜像复制进去(高于当前系统版本容易把 apt 搞坏)。
  • sudo apt update

基础工具

net-tools

ifconfig 查看网络配置需要安装 net-tools

sudo apt install net-tools

vim

sudo apt install vim

gedit

sudo apt install gedit

git

sudo apt install git

gcc

sudo apt install gcc

sudo apt install gcc-multilib

python

sudo apt install python2

sudo apt install python3

sudo apt install ipython

sudo apt install ipython3

pip

sudo apt install python3-pip

sudo apt install curl

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py

sudo python2 get-pip.py

docker

sudo apt install docker.io

sudo apt install docker-compose

oh-my-zsh

#尽量root用户也下载一边

sudo apt install zsh

安装oh-my-zshsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

设置zsh为默认shell(重启虚拟机后生效)

chsh -s /bin/zsh

安装插件:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

编辑~/.zshrc添加插件:

plugins=(git

zsh-autosuggestions

zsh-syntax-highlighting

extract

)

 

gdb

安装: sudo apt-get install gdb gdb-multiarch

gdb 插件

主要有 pwndbg,peda,gef,这里我常用的是pwndbg。对于版本过于古老导致环境装不上的可以试一下peda.

先将三个项目的代码都拉取下来:

git clone https://github.com/longld/peda.git

git clone https://github.com/pwndbg/pwndbg.git

git clone https://github.com/hugsy/gef.git

pwndbg 需要运行初始化脚本:

cd pwndbg

sudo ./setup.sh

另外还有一个 pwngdb 插件在调试多线程堆( heapinfoall 命令)的时候很有用,建议安装。

git clone https://github.com/scwuaptx/Pwngdb.git

gdb 在启动的时候会读取当前用户的主目录的.gdbinit文件进行 gdb 插件的初始化,这里提供一个

配置方案。

source /home/ubuntu/tools/pwndbg/gdbinit.py
#source /home/ubuntu/tools/peda/peda.py
#source /home/ubuntu/tools/gef/gef.py
#source /home/ubuntu/tools/muslheap/muslheap.py
source /home/ubuntu/tools/Pwngdb/pwngdb.py
source /home/ubuntu/tools/Pwngdb/angelheap/gdbinit.py
define hook-run
python
import angelheap
angelheap.init_angelheap()
end
end

注意,以普通用权限和管理员权限启动 gdb 时读取的 .gdbinit 文件的路径是不同的,普通权限读取的

是 /home/<username>/.gdbinit 而管理员权限读取的是 /root/.gdbinit 。

pwndbg 安装 ghidra 插件可以支持代码反编译(虽然没啥用 )

  • 安装 r2pipe 库
    • pip3 install r2pipe
  • 下载安装 radere2 项目
    • git clone https://github.com/radareorg/radare2.git
    • cd radare2
    • sudo sys/install.sh
  • 下载编译安装 r2ghidra 项目
    • git clone https://github.com/radareorg/r2ghidra.git
    • cd r2ghidra
    • sudo ./preconfigure
    • sudo ./configure
    • sudo make -j16
    • sudo make install
gadget 搜索工具
ROPgdbget

安装:

git clone https://github.com/JonathanSalwan/ROPgadget.git

cd ROPgadget

sudo python3 setup.py install

使用:

ROPgadget --binary ntdll.dll > rop

ropper

安装:

  • 在pypi 的 ropper 官网上下载 ropper
  • 运行安装脚本完成 ropper 安装
    • sudo python3 setup.py install

使用:

ropper --file ./pwn --nocolor > rop

one_gadget

用于搜索 libc 中能够实现 execve("/bin/sh", (char *[2]) {"/bin/sh", NULL}, NULL); 的效果

的跳转地址,由于是采用特征匹配的方法,因此只能是在 libc 中查找。

安装:

  • sudo apt install -y ruby ruby-dev
  • sudo gem install one_gadget

使用:可以查找到 gadget 地址以及条件限制。

➜ ~ one_gadget /lib/x86_64-linux-gnu/libc.so.6
0x50a37 posix_spawn(rsp+0x1c, "/bin/sh", 0, rbp, rsp+0x60, environ)
constraints:
rsp & 0xf == 0
rcx == NULL
rbp == NULL || (u16)[rbp] == NULL
0xebcf1 execve("/bin/sh", r10, [rbp-0x70])
constraints:
address rbp-0x78 is writable
[r10] == NULL || r10 == NULL
[[rbp-0x70]] == NULL || [rbp-0x70] == NULL
0xebcf5 execve("/bin/sh", r10, rdx)
constraints:
address rbp-0x78 is writable
[r10] == NULL || r10 == NULL
[rdx] == NULL || rdx == NULL
0xebcf8 execve("/bin/sh", rsi, rdx)
constraints:
address rbp-0x78 is writable
[rsi] == NULL || rsi == NULL
[rdx] == NULL || rdx == NULL

 

seccomp-tools

用于查看和生成程序沙箱规则。

安装: sudo gem install seccomp-tools

使用: seccomp-tools dump ./pwn

LibcSearcher

通过泄露的 libc 中函数的地址来确定 libc 版本

git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python3 setup.py install
glibc-all-in-one

临时找 glibc 和 ld 或者编译 glibc

git clone https://github.com/matrix1001/glibc-all-in-one.git

更新下载列表:

➜ glibc-all-in-one ./update_list
[+] Common list has been save to "list"
[+] Old-release list has been save to "old_list"
➜ glibc-all-in-one cat list
2.23-0ubuntu10_amd64
2.23-0ubuntu10_i386
2.23-0ubuntu11_amd64
2.23-0ubuntu11_i386
2.23-0ubuntu3_amd64
2.23-0ubuntu3_i386
2.27-3ubuntu1_amd64
2.27-3ubuntu1_i386
2.28-0ubuntu1_amd64
2.28-0ubuntu1_i386
......
➜ glibc-all-in-one cat old_list
2.21-0ubuntu4.3_amd64
2.21-0ubuntu4.3_amd64
2.21-0ubuntu4_amd64
2.21-0ubuntu4_amd64
2.24-3ubuntu1_amd64
2.24-3ubuntu1_amd64
2.24-3ubuntu2.2_amd64
2.24-3ubuntu2.2_amd64
2.24-9ubuntu2.2_amd64
2.24-9ubuntu2.2_amd64
......

下载libc:

cat list |xargs -i ./download {}

cat old_list |xargs -i ./download_old {}

编译libc:

sudo ./build [版本例如2.29] [架构例如 i686 amd64]

patchelf

安装: sudo apt install patchelf

qemu

安装: sudo apt install qemu-user qemu-system

alpha3

安装: git clone https://github.com/TaQini/alpha3.git

from pwn import *
import os
context(arch='amd64', os='linux')
context.log_level = 'debug'
fp = open("shellcode", "wb+")
fp.write(asm(shellcraft.sh()))
fp.close()
shellcode = os.popen("python ./alpha3/ALPHA3.py x64 ascii mixedcase rax --
input=shellcode").read()
print shellcode

WSL

我们可以用wsl和vscode来完成我们的环境搭建.

  1. 首先我们需要在vscode下载wsl插件.
  2. 在wsl里输入code .
    1. 如果这一部报错,看报错信息记住他说要去哪个网址(https://update.code.visualstudio.comcommit:(根据报错填写)/server-linux-x64/stable)下载东西,我们挂上梯子,然后我们手动下载,之后放到~/.vscode-server/bin目录下,记得把其他文件删完.
      1. cd ~/.vscode-server/bin
      2. tar -zxf vscode-server-linux-x64.tar.gz
      3. mv vscode-server-linux-x64 ${id} # 注意把:${id}替换成对应的id
  3. wsl里输入code .就能打开vscode了

LINUX安装应用

比如安装clion,我们下载了他的tar.tz包,解压之后它里面会有一个bin目录

bin里有个clion.sh(pycharm里面是pycharm.sh),这个就是启动脚本,

打开后创建桌面条目就行了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教程】怎么给网站添加弹窗广告代码javascript

由于最近支付宝悬赏领红包活动比较多邀请别人扫码自己也有奖励于是就想到了给自己网站上添加一个这种弹窗广告用户可以自己领取红包 效果图 代码也很简单下面附上代码 首先引入jquery <script src”https://pay.codewo.cn/static/index/user/assets/vendor/libs/jquery/j…

绘出你的梦中情人,AI绘画Stable Diffusion 万金油模型推荐 ,助你快速涨粉!

嘿&#xff0c;大家好&#xff0c;我是向阳 到目前为止&#xff0c;我已经分享了近百篇AI绘画类的文章教程以及模型分享 其中有些模型已经无法下载了&#xff0c;原因懂得自懂 你是否也和我一样&#xff0c;每天看着这样的小姐姐乐不思蜀&#xff0c;简单的提示词就能实现你…

用C#(WinForm)开发触摸屏,体验感满满

用C#&#xff08;WinForm&#xff09;开发触摸屏&#xff0c;体验感满满

基于粒子群优化算法的的微电网多目标优化调度----解析代码

前言&#xff1a; 写在这里&#xff0c;这是我小论文的方向&#xff0c;但是以前从来没有接触过微电网及优化调度算法&#xff0c;所以呢&#xff0c;开始展开积极自救。两个月前&#xff0c;我开始重拾Matlab编程以及最简单的微电网知识&#xff0c;以及看一些论文&#xff0c…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

【机器学习】基于CNN-RNN模型的验证码图片识别

1. 引言 1.1. OCR技术研究的背景 1.1.1. OCR技术能够提升互联网体验 随着互联网应用的广泛普及&#xff0c;用户在日常操作中频繁遇到需要输入验证码的场景&#xff0c;无论是在登录、注册、支付还是其他敏感操作中&#xff0c;验证码都扮演着重要角色来确保安全性。然而&am…

代码随想录:回溯19

332.重新安排行程 题目 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从…

C语言面试题总结(含参考答案)------持续更新

1、关键字static的作用是什么&#xff1f; 在函数内部使用static修饰局部变量时&#xff0c;表示该变量在程序的整个生命周期内只会被初始化一次&#xff0c;并且在函数调用结束后不会被销毁&#xff0c;其值会一直保持。这种特性使得静态局部变量成为一种很有用的工具&#xf…

【ARM】MDK出现报错error: A\L3903U的解决方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决MDK出现报错error: A\L3903U这样类型的报错 2、 问题场景 电脑或者软件因为意外情况导致崩溃&#xff0c;无法正常关闭&#xff0c;强制电脑重启之后&#xff0c;打开工程去编译出现下面的报错信息&#xff08;…

怎么把pdf格式文件其中几页单独弄出来

在现代办公和学习环境中&#xff0c;pdf格式的文件因其跨平台兼容性和良好的保持原样特性而备受欢迎。然而&#xff0c;有时我们可能只需要pdf文件中的某几页&#xff0c;而不是整个文件。这时&#xff0c;将PDF文件中的特定页面单独提取出来就显得尤为重要。 搜索一下&#xf…

React基础教程:TodoList案例

todoList案例——增加 定义状态 // 定义状态state {list: ["kevin", "book", "paul"]}利用ul遍历list数组 <ul>{this.state.list.map(item ><li style{{fontWeight: "bold", fontSize: "20px"}} key{item.i…

后端项目实战--瑞吉外卖项目软件说明书

瑞吉外卖项目软件说明书 一、项目概述 瑞吉外卖项目是一个外卖服务平台&#xff0c;用户可以通过该平台浏览餐厅菜单、下单、支付以及追踪订单状态。产品原型就是一款产品成型之前的一个简单的框架&#xff0c;就是将页面的排版布局展现出来&#xff0c;使产品得初步构思有一…

Linux ldd和ldconfig

ldconfig ldconfig 查看默认库路径和ld.so.conf包含的库路径&#xff0c;来建立运行时动态装载的库查找路径。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),…

推挽式B类功率放大器的基本原理

单晶体管 B 类放大器&#xff08;图 1&#xff09;使用高 Q 值储能电路作为负载来抑制高次谐波分量。通过采用高 Q 谐振电路&#xff0c;输出电压仅包含基波分量&#xff0c;使放大器能够忠实地再现输入信号。尽管集电极电流是半波整流正弦波&#xff0c;但高 Q 值储能电路将谐…

11_1、多态性:概念及运算符重载

多态性 多态的概念和类型多态的类型多态的实现 运算符重载运算符重载的概念和规则概念规则 运算符重载为类的成员函数双目运算符单目运算符 运算符重载为类的友元函数双目运算符重载单目运算符重载 多态的概念和类型 消息&#xff1a;消息在C编程中指的是对类的成员函数的调用…

【C++进阶】模板与仿函数:C++编程中的泛型与函数式编程思想

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;栈和队列相关知识 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀模板进阶 &#x1f9e9;<&…

深度学习之激活函数

激活函数&#xff08;Activation Function&#xff09;是一种添加到人工神经网络中的函数&#xff0c;旨在帮助网络学习数据中的复杂模式。在神经元中&#xff0c;输入的input经过一系列加权求和后作用于另一个函数&#xff0c;这个函数就是这里的激活函数。 1. 为什么需要激活…

在Oxygen中如何打开文件管理器并显示文件所在目录

▲ 搜索“大龙谈智能内容”关注公众号▲ 在Oxygen中&#xff0c;我们常需要查看项目中的某文件在Windows“文件资源管理器”所在位置&#xff0c;从而进行拷贝、分享等各种操作。 通过以下方法可以实现&#xff1a; 1. 在Oxygen的“项目”中选择文件并单击右键 2. 选择菜单…

数据可视化后起之秀——pyecharts

题目一&#xff1a;绘制折线图&#xff0c;展示商家A与商家B各类饮品的销售额 题目描述&#xff1a; 编写程序。根据第9.3.1&#xff0c;绘制折线图&#xff0c;展示商家A与商家B各类饮品的销售额。 运行代码&#xff1a; #绘制折线图&#xff0c;展示商家A与商家B各类饮品的…

【区块链】解码拜占庭将军问题:区块链共识机制的哲学基石

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 解码拜占庭将军问题&#xff1a;区块链共识机制的哲学基石引言一、拜占庭将军问…