BUUCTF pwn
第一道:
第一步:连接nc靶场
第二步:连接靶场后,执行 ls 命令,展示该靶场下目录文件。
第三步:里有个 flag文件 使用 cat命令进行查看。
得到flag
nc命令详解
第二道:
第一步:下载得到 pwn1,利用 file 命令查看。
显而易见(ELF 64-bit)。放入IDA中查看。
第二步:用IDA查看
首先 f12+shift 转到字符串窗口。
之后,按下f5 查看伪代码
此时注意到 gets函数
gets函数的缓冲区是由用户本身提供,由于用户无法指定一次最多可读入多少字节,导致此函数存在巨大安全隐患。换句话来说,就是gets若没有遇到 \n 结束,则会无限读取,没有上限。
双击 s ,查看需要多少字节 。以此来确定偏移量。
也就是说只需要存入15个字节地址,就可以get函数返回地址。
解题要点
注意到 后面还有 db 8 dup(?)db: 定义字节类型变量的伪指令dup(): 重复定义圆括号中指定的初值,次数由前面的数值决定?: 只分配存储空间,不指定初值
因此 最后偏移量为 : 15+8 = 23 。
或者通过 peda 来计算偏移量。
对其进行gdb调试:
gdb pwn1
生成溢出字符,需保证其长度能覆盖至RIP。执行 pattern create 200 命令
执行 r 或者 start 命令让程序运行。//注意 start 命令执行后,还需执行 contin 命令。
在 please input 命令后,将之前生成的溢出字符串粘贴上去
注意到 RBP寄存器。也可以计算此时 nAACAA-A 的偏移量:
执行 pattern offset xxxxxx 命令。
这里计算出的偏移量。不需要考虑堆栈平衡。构造playload时,直接与系统调用地址相加就可。
通俗办法:
找到 stack 复制栈顶的字符串 // 前四个字节(64 bits为前8个字节) 计算偏移量
执行 pattern offset xxxxxx 命令。
第三步:回到 IDA pro中。寻找是否存在 系统调用函数。
找到 fun() 函数
第四步:编写脚本
第五步:执行代码,得到flag
第三道:
第一步:nc一下靶场
file 命令查看一下
第二步:用IDA查看
存在一个 cat flag.txt 命令。对其进行 gdb调试,得到偏移量。
遇到这这个问题时
使用chmod 777 +文件名,来扩大其权限
第三步:编写exp.py
第四步:执行代码,得到flag
第四道:
第一步:用file指令打开查看
第二步:用IDA查看
第三步:计算偏移量
20个I 可以填满s溢出
第三步:编写exp.py
第四步:执行代码,得到flag
第五道:
第一步:用file指令打开
第二步:在IDA查看,发现func里发现溢出点![](/assets/blank.gif)
当v2=11.28125时可以得到flag
因为无法直接对v2进行操作,只能通过溢出v1来修改v2的值,所以要对v1填充数据0x30-0x4,再令v2的值为11.28125
因为浮点数在内存中的储存方式不同,我们需要先进行转化
11.28125 转化为二进制为 1011.01001
规范化为1.01101001*2^3
所以11.28125在内存中的储存形式为
11.28125 =>
0100 0001 0011 0100 1000 0000 0000 0000
用16进制数表示为 0x4134800
第三步:编写exp.py
第四步:执行代码,得到flag
第六道:
第一步:用file指令打开
第二步:在IDA查看
点开vulnerable_function函数,发现栈溢出的read函数
第三步:编写exp.py
第四步:执行代码,得到flag
第七道:
第一步:用file指令打开
第二步:在IDA查看
shift+f12查看一下程序里的字符串,看到了 /bin/sh
双击跟进,ctrl+x找到调用这个字符串的函数
第三步:编写exp.py
第四步:执行代码,得到flag
第八道:
第一步:用file指令打开
第二步:在IDA查看
进入主函数,使用F5反编译后得到
首先看&buf,双击,发现并没有溢出
然后查看name_check
看到上述的代码,可以判断是整型溢出
第三步:编写exp.py
第四步:执行代码,得到flag
mrctf2020_easyoverflow
一道简单的栈溢出
用checksec查看保护
别看保护都全开就有些害怕,进IDA看看伪代码
存在栈溢出,而且存在后门函数。
所以思路很明确,只要满足check(v5)这个函数的返回值为真就可拿到shell。
来看看check函数
该函数的作用就是查看v5的值是否和fake_flag的值相等
在.data段查看fake_flag的值
我们可以填充v4的数值,但判断的是v5的数值,所以我们可以通过gets溢出,来填充v5的数值,所以来判断v4和v5的距离。
可以看到v4和v5相差0x30个字节。
emmm 可以构造payload了
from pwn import * io=remote("node4.buuoj.cn",25711) payload=b'a'*0x30+b'n0t_r3@11y_f1@g' io.sendline(payload) io.interactive()
运行exp得到flag
BUUCTF pwn相关推荐
- BUUCTF Pwn warmup
BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...
- 持续更新 BUUCTF——PWN(一)
文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...
- BUUCTF PWN rip1 WP
BUUCTF PWN rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...
- buuctf pwn bjdctf_2020_babyrop
buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...
- 持续更新 BUUCTF——PWN(二)
文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...
- 持续更新 BUUCTF——PWN(三)
文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...
- Buuctf(pwn) picoctf_2018_rop chain 栈溢出
32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...
- BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...
- Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算
32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...
最新文章
- Android Studio 三种添加插件的方式,androidstudio
- 我开发中总结的小技巧
- fodera开机启动优化
- 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析 1
- windows系统OLLVM + NDK 混淆编译环境搭建
- python学生管理系统2.0-python3.6+django2.0开发一套学员管理系统
- thinkjs——两表联查
- java语言环境变量_java语言环境jdk的安装和环境变量的配置
- Rust: CTP的rust版本如何手工封装
- Linux 内核 下载 编译 安装 2021 ubuntu
- ZZULIOJ.1092:素数表(函数专题)
- qq人脸更换_QQ安全中心现在怎么替换人脸设置或删除人脸?
- 计算机回收站设置大小,电脑怎么设置回收站容量 电脑回收站的数据文件位置在哪...
- built a JNCIS LAB系列:Chapter 1 Routing Policy Processing v1.0
- 前端不错的相关网站和论坛
- (转)iOS 上的相机捕捉
- 《罗曼蒂克消亡史》影评
- 【MySQL】数据库表操作
- 基于Java+Swing实现餐厅点餐系统
- 中国量子计算机的运算速度是,中国量子计算机问世,运算速度碾压顶级超算,美国:时代变了...