0502经验分享

一、简单搭建环境

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

五、比赛经验

关于这次攻防大赛

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值