CTF-PWN中常用到的工具

CTF-PWN中常用到的工具及其功能作用

工欲善其技必先利其器

0x00 工具清单

PWN用到的工具相对于其他的方向的工具并不是很多,因此个人感觉 它也相对难一些

以下是比赛时常需要用到的工具:

  • GDB: Linux调试中必要用到的
  • gdb-peda、pwndbg、gef: GDB调试插件
  • pwntools:写exp和poc的利器
  • libc-databases:可以通过泄露的libc的某个函数地址查出远程系统是用的哪个libc版本
  • checksec:可以很方便的知道elf程序的安全性和程序的运行平台
  • objdump :可以很快的知道elf程序中的关键信息
  • readelf:可以很快的知道elf程序中的关键信息
  • ida pro:反汇编工具
  • ROPgadget:强大的rop利用工具
  • one_gadget:可以快速的寻找libc中的调用exec(‘bin/sh’)的位置

0x10 GDB常用插件安装

peda

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

pwndbg

git clone https://github.com/pwndbg/pwndbg

cd pwndbg

./setup.sh

gef

# via the install script
#下载 `gef.sh` 并执行
wget -q -O- https://github.com/hugsy/gef/raw/master/gef.sh | sh

# manually
# 下载 `gef.py`, 并将其 `source` 写入 `.gdbinit`
wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py
echo source ~/.gdbinit-gef.py >> ~/.gdbinit

0x20 libc-databases

libc_database

  • ./add 用来添加libc库
./add /usr/lib/libc-2.21.so
  • ./find 用来查找libc版本
$ ./find printf 260
archive-glibc (id libc6_2.19-10ubuntu2_i386)
  • ./dump 用来输出libc中的一些函数的偏移
$ ./dump libc6_2.19-0ubuntu6.6_i386
offset___libc_start_main_ret = 0x19a83
offset_system = 0x00040190
offset_dup2 = 0x000db590
offset_recv = 0x000ed2d0
offset_str_bin_sh = 0x160a24

LibcSearcher

一个基于libc_database写的python库

from LibcSearcher import *

#第二个参数,为已泄露的实际地址,或最后12位(比如:d90),int类型
obj = LibcSearcher("fgets", 0X7ff39014bd90)

obj.dump("system")        #system 偏移
obj.dump("str_bin_sh")    #/bin/sh 偏移
obj.dump("__libc_start_main_ret")    

libc database search

一个用来查询libc版本的网站

LibcSearcher

git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop

0x30 ida pro

官方下载地址: https://www.hex-rays.com/products/ida/

0x40 pwntools

python2.x:

pip2 install pwntools

python3.x:

pip3 install pwntools

0x50 ROPgadget

查找可存储寄存器的代码

ROPgadget --binary rop  --only 'pop|ret' | grep 'eax'

查找字符串

 ROPgadget --binary rop --string "/bin/sh"

查找有int 0x80的地址

ROPgadget --binary rop  --only 'int'

0x60 one_gadget

sudo apt -y install ruby
sudo gem install one_gadget 

0x70 Docker

http://cdusec.happyhacking.top/?post=113

0x100 补充

部分工具可以使用

https://github.com/giantbranch/pwn-env-init.git

来一键下载具体看https://blog.csdn.net/u012763794/article/details/83831875 这位大佬的博客

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ctfd-pwn是一个非常受欢迎的CTF(Capture The Flag)比赛的一个赛题类型,它主要涉及二进制漏洞的利用和系统安全的挑战。 在ctfd-pwn赛题的收集过程,通常需要考虑以下几个方面: 1. 题目类型:ctfd-pwn赛题可以包含多种类型的漏洞,例如缓冲区溢出、格式化字符串漏洞、整数溢出等。在收集赛题时需要确保涵盖各种漏洞类型,增加题目的多样性和挑战性。 2. 难度级别:赛题的难度级别应该根据参赛者的水平来确定。可以设置多个难度级别的赛题,包括初级、级和高级,以便参赛者可以逐步提高自己的技能。 3. 原创性:收集ctfd-pwn赛题时应尽量保持赛题的原创性,避免过多的抄袭或重复的赛题。这有助于增加参赛者的学习价值,同时也能提高比赛的公平性。 4. 实用性:收集的赛题应该具有实际应用的意义,能够模拟真实的漏洞和攻击场景。这样可以帮助参赛者更好地理解和掌握系统安全的基本原理。 5. 文档和解答:为每个收集的赛题准备详细的文档和解答是很有必要的。这些文档包括赛题的描述、利用漏洞的步骤和参考资源等,可以帮助参赛者更好地理解赛题和解题思路。 6. 持续更新:CTF比赛的赛题应该定期进行更新和维护,以适应不断变化的网络安全环境。同时也要根据参赛者的反馈和需求,不断收集新的赛题,提供更好的比赛体验。 综上所述,ctfd-pwn赛题的收集需要考虑赛题类型、难度级别、原创性、实用性、文档和解答的准备,以及持续更新的需求。这样才能提供一个富有挑战性和教育性的CTF比赛平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值