pwn常用工具快捷键学习

glibc换源

资料:pwn题更换libc版本 (z1r0.top)

pwn技术分享——使用patchelf和glibc-all-in-one替换程序依赖的libc文件_哔哩哔哩_bilibili

下载libc

python3 update_list      #更新list
./download 2.23-0ubuntu11.2_amd64        #glibc为你想要下载glibc的名字

./download_old libc #list没有,可以使用./download_old libc版本号来下载

格式:

./:用的当前文件夹下文件

/:绝对路径

1.patchelf --set-interpreter

patchelf --set-interpreter ./ld-目标版本 ./运行的程序
例子
patchelf --set-interpreter ./ld-2.23.so ./pwn

2.patchelf --replace-needed libc.so.6

patchelf --replace-needed libc.so.6 新libc文件路径 运行的程序
例子
patchelf --replace-needed libc.so.6 ./libc-2.23.so ./pwn

vim

普通模式
G(普通模式) 来的文本最下方
g+g(普通模式下) 回到文本的开头
f+目标单词的首字母(find普通模式) 移动到目标单词
d(delete) 删除当前行
u(undo) 撤销
文本模式
I 从当前行开头进行输入
A 当前行文末输入

ida

F7 单步执行,遇到call或者函数调用就进入
F8 单步执行,遇到call或者函数调用就跳过
F9 开始调试一直运行
F2 下一个0xCC的软件断点
F4 运行到光标初
U 取消函数,代码,数据的定义
C 把字节码翻译为汇编语句
p 定义函数
D 数据长度类型转化,1/2/4/8
H 数字->16进制
a (数据)->字符串
R 数字->字符(‘120’打了单引号是个字符y,要ask码转换)
y 修改数据类型声明
n 对函数或者变量重命名(函数名为sub_234875)
g 去往某一个地址
CTRL F7 一直运行
shift +f12 找出所有字符串
/ 在反汇编后界面写注释,汇编语言界面也可用
ctrl+x 查看函数或变量的交叉引用(通过flag.txt字符串找函数)
tab 汇编代码与c代码视角转换
ctrl+s 段表信息
telescope+0x地址 用stack段的形式查看内存中地址信息
ctrl+t 查找特定指令和字符串
shift+e 导出数据

gdb

n 不进入函数的单步执行
s 进入被调用(call)函数
finish s步入函数后用会执行完此函数
c 直接执行到下一个断点。
k(kill) kill当前进程
r(run) 运行程序
gdb+文件 动态调试文件
vmmap 查看虚拟内存映射,包括代码段、数据段、堆、栈和共享库等区域。
b *0x地址 打断点
ni 下一条汇编指令
disable b +数字 去掉第几个断点
info b 查看当前断点
bt 查看函数调用栈
info r 查看所有寄存器的值。
list 查看源代码。
vis 查看堆块
tel +地址 类似查看stack信息的格式
x/20gx +地址 x是16进制显示,w读4字节是32位程序,g是8字节对应64位,b是1字节,h2字节

tmux

ctrl+b +c 打开新窗口
ctrl+b +% 分左右屏幕
ctrl+b +“ 上下分屏
ctrl+b +方向 换屏幕
ctrl+d 关屏

其他工具快捷键

快捷键 效果
ROPgadget --binary 文件 --only 'pop|ret' | grep 'eax' 在正常终端下即可
ROPgadget --binary 文件 --string '/bin/sh' 找字符串地址
ROPgadget --binary=动态链接库 --only 'pop|ret' |grep '' 在库中找
cyclic(数字) 生成垃圾数据
strings 文件名 | grep 字符串
fmtarg 地址 显示此处是格式化字符串函数的第几个参数
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 显示共享文件夹
print("stack"+hex(flg)) exp脚本打印信息
seccomp-tools dump ./文件名 查看函数禁用
gdb.attach(p,"b *0x函数地址\nc") gdb直接定位在目标地址
shellcode编写 shellcode=shellcraft.open("./flag")
shellcode+=shellcraft.read(3,0xcafe0000+0x100,0x50)
shellcode+=shellcraft.write(1,0xcafe0000+0x100,0x50)
shellcode=asm(shellcode)
找libc版本 strings libc.so.6 | grep ubuntu
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space 临时禁用 Linux 内核中的地址空间布局随机化
posted @ 2024-05-29 20:54  Ma&0xFly  阅读(62)  评论(1)    收藏  举报