#安装
pip install pwntools
#验证是否安装完成
运行含from pwn import*的文件,没有报错证明安装成功
或者checksec 文件
(2)peda
git clone https://github.com/longld/peda.git
(3)pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
pwndbg适合调试堆。peda适合查看字符串。
#peda和pwndbg切换
nano ~/.gdbinit
或者写个脚本
或者其他的...
(4)git
#先看看有没有安装git
git --version
#如果没有安装
sudo apt install git
4.必备工具 (1)IDA不会安装软件怎么办?
通常都是
sudo apt install xxx
pip install xxx
…
安装包 提取码:cjkc
常用快捷键
Shift+F12:打开字符串窗口
F5:反汇编成伪代码
A:将数据转换成字符串
[空格]:切换流程图和文本视图
(2)gdb
不会用相关命令怎么办?
名字
help
看命令介绍
看不懂英文怎么办?
百度翻译
l #list
r #run
c #continue
s #step
n #next
b #break
...
二、做题流程
拿到一道题应该怎么做
通常我是这样走流程的
有/bin/sh那么十有八九这道题比较简单,没有压力
没有的话可能就得…
通常函数简单的话,题目也简单,看看相关函数有没有read、printf等等。
4.看system的地址(如果有的话),或者xxx 5.编写expnano xxx.py
vim xxx.py #vim是要安装的,使用起来不容易习惯
直接跟记事本的一样创建打开编写
touch xxx.py
点击打开…
python xxx.py
from pwn import *
context.log_level = 'debug'
#context(os='linux',arch='x86/amd64',log_level='debug')
p = remote("ip地址",端口)#连接远程端口
p = process("./文件名")#本地打开题目
payload =
p.sendlineafter('参数a',参数b)#参数a后面输入参数b,通常参数a是题目本身有的
p.revuntil('参数a')#接收参数a
p.recv(参数a)
p.sendline(参数a)
p.interactive()#代码执行后与端口进入交互模式
#这一部分不一定会用的上
#如果遇到题目中没有直接给出/bin/sh,
elf=ELF('./文件名')#载入elf文件
elf_glt_addr=elf.plt['函数名']
elf_got_addr=elf.got['函数名']
elf_system_addr=elf.symbols['函数名']
next(elf.search('/bin/sh'))#寻找/bin/sh的地址
#将16进制地址数转化为相应字节的字符串(64位-8字节,32位-4字节)
p64()
p32()
#与上相反
u64()
u32()
三、做题示范
四、需要知识总结
C/C++、汇编,python,数据结构,只需要知道基础的就行。
五、比赛经验关于这次攻防大赛
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)