启动!
一键起飞套装
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y build-essential jq strace ltrace curl wget rubygems tmux gcc dnsutils netcat-traditional gcc-multilib net-tools vim gdb gdb-multiarch patchelf zip unzip python3-full ipython3 python-is-python3 python3-pip python3-dev lib32z1 libssl-dev libc6-dev-i386 libffi-dev wget git make procps libpcre3-dev libdb-dev libxt-dev libxaw7-dev libc6:i386 libstdc++6:i386 
sudo gem install one_gadget seccomp-tools
pip3 install capstone requests pwntools r2pipe ropper -i https://pypi.tuna.tsinghua.edu.cn/simple
cd ~
wget timlzh.com/files/gdbInit.zip
unzip gdbInit.zip
然后就能直接开个tmux,然后直接gdb即可,超级舒服的分屏,很黑客!

~/pwninit用来初始化pwn题做题环境
#!/bin/bash
for file in $(ls); do
    fileType=$(file $file)
    if [[ $fileType == *"ELF"* ]]; then
        chmod +x $file
        echo ======$file======
        echo $fileType
        echo ""
        checksec $file
        echo =================
        echo ""
    fi
done
# Create exp.py
if [[ ! -f "exp.py" ]]; then
echo "Create exp.py"
cat > exp.py << EOF
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pwn import *
from pwn import p64, u64, p32, u32
import os
context.log_level = 'debug'
context.arch = 'amd64'
host = '127.0.0.1'
port = 10001
fileName = './pwn'
# libcName = './libc.so.6'
r = process(fileName)
# r = remote('127.0.0.1', 10001)
# r = remote(host, port)
elf = ELF(fileName)
# libc = ELF(libcName)
def debug(p, cmd = ''):
    if os.environ.get('VSCODE_INJECTION', None):
        return
    gdb.attach(p, cmd)
    pause()
debug(r)
payload = cyclic(0x10 + 8) + p64(114514)
r.sendlineafter(b'\n', payload)
r.interactive()
EOF
fi
chmod +x exp.py
GDB,我直接手撕
| 命令 | 作用 | 
|---|---|
| b *0x400000 | 在地址0x400000处设置断点 | 
| b *main | 在main函数处设置断点 | 
| r | run,运行程序 | 
| c | continue,继续执行 | 
| n | next,执行下一条语句 | 
| s | step into,进入函数 | 
| p [exp] | print,打印变量 | 
x命令的格式为x/[n][f][size] [addr],其中n为打印的单位个数,f为打印的格式,size为打印的单位大小,addr为打印的地址。
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
用不来GDB,用更适合re宝宝体质的ida调试!
把这玩意写到~/.zshrc里
RED='\033[0;31m'
NC='\033[0m'
function socatStart() {
    local fileName=$1
    local port=$2
    if [ -z "$fileName" ]; then
        echo "Usage: socatStart <file> [port]"
        return
    fi
    if [ -z "$port" ]; then
        port=10001
        echo "Using default port: $port"
    fi
    if [ ! -f "$fileName" ]; then
        echo "File not found: $fileName"
        return
    fi
    file $fileName
    echo ''
    echo "socat tcp-listen:$RED$port$NC,reuseaddr,fork EXEC:$RED$fileName$NC,pty,raw,echo=0"
    socat tcp-listen:$port,reuseaddr,fork EXEC:$fileName,pty,raw,echo=0
}
直接socatStart ./pwn,然后pwntools里面直接r = remote('127.0.0.1', 10001),ida里面直接attach,然后就可以愉快的调试了。