ctf中pwn题目总结

2023-05-16

pwntools工具使用

1.安装

pip install pwntools (python2)
pip3 install pwntools (python3)

2.使用
Context设置
context是pwntools用来设置环境的功能。在很多时候,由于二进制文件的情况不同,我们可能需要进行一些环境设置才能够正常运行exp,比如有一些需要进行汇编,但是32的汇编和64的汇编不同,如果不设置context会导致一些问题。一般来说我们设置context只需要简单的一句话:

context(os='linux', arch='amd64', log_level='debug')

(1)os设置系统为linux系统,在完成ctf题目的时候,大多数pwn题目的系统都是linux
(2)arch设置架构为amd64,可以简单的认为设置为64位的模式,对应的32位模式是’i386’
(3) log_level设置日志输出的等级为debug,这句话在调试的时候pwntools会将完整的io过程都打印下来,使得调试更加方便。

3.数据打包
数据打包,即将整数值转换为32位或者64位地址一样的表示方式,比如0x400010表示为\x10\x00\x40一样,这使得构造payload变得很方便

用法:

  • p32/p64: 打包一个整数,分别打包为32或64位
  • u32/u64: 解包一个字符串,得到整数

4.接收远端传回的数据

recv(numb=字节大小, timeout=default) : 接收指定字节数。

recvall() : 一直接收直到达到文件EOF。

recvline(keepends=True) : 接收一行,keepends为是否保留行尾的\n。

recvuntil(delims, drop=False) : 一直读到delims的pattern出现为止。

recvrepeat(timeout=default) : 持续接收直到EOF或timeout。

5.向远端发送数据

send(data) : 发送数据。

sendline(data) : 发送一行数据,相当于在数据末尾加\n。

pwn题目调试

1.checksec filename
2.

context.log_level="debug"
context.terminal = ['tmux', 'splitw', '-h' ]
context(arch='i386/amd64', os='linux', log_level='debug')
ROPgadget --binary level3 |grep "push ebp"
ROPgadget --binary level3  --string="/bin/sh"

IDA使用说明

ctrl+x 查看交叉引用
ctrl+s 查看分段
ctrl+alt+k keypatch的快捷键
字母c可以将十六进制和汇编之间进行转换
右键可以将十六进制显示为十进制或者对应字符串
字符串搜索的时候要在汇编页面进行搜索

kali中文乱码

确定locales已经安装,用”apt-get install locales”命令;之后可用”locale -a”查看当前系统支持的字符集。

在命令行输入”dpkg-reconfigure locales”。进入图形化界面之后,(空格是选择,Tab是切换,*是选中),选中en_US.UTF-8和zh_CN.UTF-8,确定后,将en_US.UTF-8选为默认。
安装中文字体,apt-get install xfonts-intl-chineseapt-get install ttf-wqy-microhei,这时发现中文乱码问题解决。

root@kali配色
未修改颜色前都是白色,容易看晕,修改方法:
vim .bashrc 进入bashrc文件修改环境变量,末尾插入

PS1='\[\e[31m\]\u@\h:\W#\[\e[m\] '

保存退出即可

在这里插入图片描述
libcSearch查找libc中函数地址

libc = LibcSearcher('write', write_addr)
libc_base=write_addr(通过函数泄露出的地址) - libc.dump('write')
binsh_addr = libc_base + libc.dump('str_bin_sh')
system_addr = libc_base + libc.dump('system')

Dynelf查找libc中函数地址

def leak(address): 
    payload = 'A' * 112 + p32(writePLT) + p32(vulnAddress) + p32(1) + p32(address) + p32(4)    
    p.send(payload) 
    data =p.recv(4)  
    return data

dynelf = DynELF(leak,elf=binary) 
system_addr = dynelf.lookup("__libc_system",'libc')

基本做题技巧

做题

1.搜索字符串flag 或者/bin/sh
2.ctrl+x查看交叉引用
3.审题找洞

from pwn import *
context.log_level = 'debug'
context.arch = 'amd64' # 'i386'

将文件夹update压缩为update.tar.gz

tar -czvf update.tar.gz update/

调试命令:

context(os='linux', arch='amd64/i386', log_level='debug')
context.terminal = ['tmux', 'splitw', '-h']
pause()

gdb调试
查看变量的值print或者display

system和_system,ROP利用的时候选择_system

其他:

elf=ELF("./pwn-200")
write_plt=elf.plt["write"]
write_got=elf.got["write"]
write_sys=elf.sym["write"]

其中write_plt和write_sys是等价的

pip指定源安装

pip install pwntools -i  https://pypi.tuna.tsinghua.edu.cn/simple
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ctf中pwn题目总结 的相关文章

  • CTFSHOW【萌新计划】Writeup

    CTFSHOW 萌新计划 web1 萌新计划 web2 萌新计划 web3 萌新计划 web4 萌新计划 web5 萌新计划 web6 萌新计划 web7 萌新计划 web8 萌新计划 web9 萌新计划 web10 萌新计划 web11
  • upload-labs:pass-10

    is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array php php5 php4 php3 php2 html htm
  • [西湖论剑2021中国杭州网络安全技能大赛]Yusa的秘密 writeup

    西湖论剑2021 Yusa的秘密 Sakura组织即将进攻地球 此时你意外得到了该组织内某个成员的电脑文件 你能从中发现本次阴谋所用的关键道具吗 注 题目中包含了五个彩蛋 且彩蛋对解题本身没有任何影响 快去发现吧 附件 Who am I z
  • ctfshow- web1(50 point)

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 首先映入眼帘的是登录界面 尝试弱口令无果 可以注册 尝试注册一个账号 通过url发现这里是通过order by进行了排序 测试发现一共5个字
  • MATRIX: 1 ctf challenge

    MATRIX 1 About Release Back to the Top Name Matrix 1 Date release 19 Aug 2018 Author Ajay Verma Series Matrix Download B
  • 【极客大挑战2019】LoveSQL解题

    1 打开靶机 BUUCTF在线评测 选择web gt 极客大挑战2019 LoveSQL 打开被测试站点 是这个样子的 是上一题EasySQL的延续 2 EasySQL那道题采用万能密码 我们也直接使用万能密码试一下 结果如下 直接给出了密
  • 再探ROP(下)

    文章目录 0x01 概述 0x02 ret2reg 2 1 起因 2 2 原理 0x03 brop详解 3 1 概述 3 2 逆向思维切入 1 搭建环境 2 溢出长度和爆破canary 3 如何getshell 4 寻找直接条件 5 寻找间
  • [CTF/网络安全] 攻防世界 disabled_button 解题详析

    CTF 网络安全 攻防世界 disabled button 解题详析 input标签 姿势 disable属性 总结 题目描述 X老师今天上课讲了前端知识 然后给了大家一个不能按的按钮 小宁惊奇地发现这个按钮按不下去 到底怎么才能按下去呢
  • 攻防世界(easy-apk)

    下载链接如下所示 https adworld xctf org cn media task attachments 989ca07c3f90426fa05406e4369901ff apk 使用JEB打开apk 如下所示 可知获得输入后进行
  • php伪随机数

    目录 函数介绍 代码测试 考点 1 根据种子预测随机数 2 根据随机数预测种子 函数介绍 mt srand 播种 Mersenne Twister 随机数生成器 mt rand 生成随机数 简单来说mt srand 通过分发seed种子 然
  • NEZUKO: 1——202201152003

    NEZUKO 1 202201152003 About Release Back to the Top Name nezuko 1 Date release 21 Aug 2019 Author yunaranyancat Series n
  • BUUCTF-PWN-Writeup-1-5

    前言 开始刷一刷Buuctf的PWN题 一边学一边刷题了 其实主要是堆学的顶不住了 一个下午才搞懂一个知识点 太tm的难了 test your nc from pwn import from LibcSearcher import cont
  • buuctf - crypto - Rabbit

    rabbit 加解密 在线Rabbit加密 Rabbit解密 在线工具
  • [2021首届“陇剑杯”网络安全大赛] SQL注入

    2021首届 陇剑杯 网络安全大赛 SQL注入 题目描述 某应用程序被攻击 请分析日志后作答 黑客在注入过程中采用的注入手法叫 布尔盲注 格式为4个汉字 例如 拼搏努力 黑客在注入过程中 最终获取flag的数据库名 表名和字段名是 Sqli
  • XSS常见的触发标签

    无过滤情况 img 图片加载错误时触发 img src x img src 1 鼠标指针移动到元素时触发 img src 1 鼠标指针移出时触发 img src 1 a a href https www qq com qq a a href
  • [BDSec CTF 2022] 部分WP

    组队参加了个国外的小线上赛 题目比较简单 目录 PWN pwnrace Reverse BDSec License Checker 0x1 shashdot Flag Box Simple Math Poster BDSec License
  • 攻防世界web---新手练习区

    查看网页源代码 根据提示 查看网页源代码 发生了什么 鼠标右键不管用了 F12看到了什么 哈哈哈哈哈 robots协议 也太简单了吧哈哈哈 备份文件 打开御剑扫描后台 cookie 没什么发现 抓包看看 看看cookie php 看http
  • 二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

    简介 pwn是ctf比赛的方向之一 也是门槛最高的 学pwn前需要很多知识 这里建议先去在某宝上买一本汇编语言第四版 看完之后学一下python和c语言 python推荐看油管FreeCodeCamp的教程 c语言也是 pwn题目大部分是破
  • [NCTF2019]Fake XML cookbook

    NCTF2019 Fake XML cookbook 日常刷题 打开题目嗯 一开始我的脑子里想到的是禁止自娱自乐 狗头 哈哈 第一想法就是试一下admin 别问为什么 web狗的自觉 果然没这么容易 抓包 将提交的数据放到了doLogin
  • GET报错注入(Sqli-labs第一题详解)

    文章目录 一 找注入点 二 order by判断列数 三 union联合注入 判断数据显示点 四 爆库 爆表 一 找注入点 单引号注入题目 在参数后面加一个单引号 id 1 数据库报错 单引号匹配出错 即添加的单引号成功被数据库解析 可以通

随机推荐