0502经验分享

0502经验分享,第1张

一、简单搭建环境 1.VMware 2.安装虚拟机 3.配置Linux环境 (1)pwntools
#安装
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

不会安装软件怎么办?
通常都是
sudo apt install xxx
pip install xxx

4.必备工具 (1)IDA

安装包 提取码:cjkc
常用快捷键

Shift+F12:打开字符串窗口
F5:反汇编成伪代码
A:将数据转换成字符串
[空格]:切换流程图和文本视图
(2)gdb

不会用相关命令怎么办?
名字
help
看命令介绍

看不懂英文怎么办?
百度翻译

l #list
r #run
c #continue
s #step
n #next
b #break
...
二、做题流程

拿到一道题应该怎么做
通常我是这样走流程的

1.checksec(其实我不经常用emmm),通常都是直接拖进32位,打不开就换64位 2.在IDA中先看看字符串

有/bin/sh那么十有八九这道题比较简单,没有压力
没有的话可能就得…

3.看看main函数的伪代码

通常函数简单的话,题目也简单,看看相关函数有没有read、printf等等。

4.看system的地址(如果有的话),或者xxx 5.编写exp

nano 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,数据结构,只需要知道基础的就行。

五、比赛经验

关于这次攻防大赛

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/799645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存