WUST CTF 第二次内部训练赛Writeup

文章目录

  • PWN
    • overflow_still
    • rop_still
    • guess
  • RE
    • maze
    • ezbabyre
  • Web
    • 签到题
    • 有点像甜饼
  • CRYPTO
    • be@r
  • MISC
    • 还是写题爽
    • Cry

PWN

overflow_still

又是overflow_still, 先进ida看看,
WUST CTF 第二次内部训练赛Writeup_第1张图片
可以看到核心代码便是cmp [ebp+arg_0], 0CAFEBABEh, 如果成功的话则call system, 最上面有gets给栈溢出开了漏洞, gdb一把梭
首先在cmp上打上断点方便计算偏移量
WUST CTF 第二次内部训练赛Writeup_第2张图片通过pattern_create 200构造字符串, 然后输入程序, 在断点下停下, 通过x/wx $ebp+0x8 查询到0xffffcc30 0x31414162
WUST CTF 第二次内部训练赛Writeup_第3张图片
由小端储存可转换为字符串bAA1, 查询偏移量位48
在这里插入图片描述
在这里插入图片描述
编写代码, 插入正确的0xcafebabe
WUST CTF 第二次内部训练赛Writeup_第4张图片WUST CTF 第二次内部训练赛Writeup_第5张图片

rop_still

常规题, 一把梭, 在函数列表里发现可疑函数what_is_this, 打开发现shell
在这里插入图片描述
很明显了, 就是要跳过来
gdb打开, pattern_create 200构造字符串, 程序崩溃, 查看eip寄存器
WUST CTF 第二次内部训练赛Writeup_第6张图片

查询偏移量, 编写程序, 完成
WUST CTF 第二次内部训练赛Writeup_第7张图片
WUST CTF 第二次内部训练赛Writeup_第8张图片

guess

先查看代码逻辑
首先要输入姓名, 留下了一个栈溢出空间
在这里插入图片描述

随后调用srand函数, 参数为 [offset a + 0x0], 翻译过来就是srand(a[0])
在这里插入图片描述
然后调用rand函数, 下面对两个数进行比较
在这里插入图片描述
srand(seed), 在相同的seed下出来的随机数序列是相同的, 于是可以通过劫持seed达到操作随机数, 使用gdb进行动态调试.

首先在srand调用前对比随机数处打上断点
WUST CTF 第二次内部训练赛Writeup_第9张图片
WUST CTF 第二次内部训练赛Writeup_第10张图片
使用pattern_create 200构造200字符串输入, 此时程序断在srand处, 可以看到种子为A-AA
WUST CTF 第二次内部训练赛Writeup_第11张图片
程序继续向下走, 到达对比处停下, 查看生成的随机数x/wx $ebp-0xc, 发现生成的随机数为0x38, 随后使用pattern_offset A-AA查询到偏移量为20, 构造脚本
WUST CTF 第二次内部训练赛Writeup_第12张图片

WUST CTF 第二次内部训练赛Writeup_第13张图片WUST CTF 第二次内部训练赛Writeup_第14张图片

RE

maze

上上下下左右左右BA

maze意思为迷宫, 本题可能和迷宫有关, 查看代码, 发现关键函数move
WUST CTF 第二次内部训练赛Writeup_第15张图片
进入move, 扫一眼逻辑, 发现了熟悉的字母WASD
WUST CTF 第二次内部训练赛Writeup_第16张图片

查看代码, 这里有一个小坑a1和::a1不是同一个变量
逻辑指出当输入为a时::a1 -= 1, 为s时::a += 8, 说明整个迷宫的高度为8格
查看return, a[::a1] == 80, a[]说明为迷宫地图, 而==80则在判断是否走的是正确的路
进入a, 提取出迷宫地图, 为64个, 说明迷宫为8*8大小
在这里插入图片描述经历15次循环后, 最后一个判断a[::a1] == 87, 87应该为迷宫终点, 对应为W, 迷宫中也有
在这里插入图片描述
编写代码, 解析迷宫
WUST CTF 第二次内部训练赛Writeup_第17张图片WUST CTF 第二次内部训练赛Writeup_第18张图片

由于::a1无初始值, 说明初始位置为(0, 0), 要到最终位置, 路径为DSSDSSSDDWWDDDS
则结果为flag{DSSDSSSDDWWDDDS}

WUST CTF 第二次内部训练赛Writeup_第19张图片

ezbabyre

丢进ida后连main函数都没有, 很明显加壳程序
WUST CTF 第二次内部训练赛Writeup_第20张图片
使用Detect It Easy查到为UPX3.9.6壳, 直接使用工具脱壳 upx/tags
WUST CTF 第二次内部训练赛Writeup_第21张图片
WUST CTF 第二次内部训练赛Writeup_第22张图片
然后丢进ida, 发现一堆进行验证, 有check1 check2 check3
然而最终flag(), 我是不是把这题当pwn题来写了
在这里插入图片描述

发现函数There, 里面才是真正的flag计算公式, 直接上Python了
WUST CTF 第二次内部训练赛Writeup_第23张图片
WUST CTF 第二次内部训练赛Writeup_第24张图片
WUST CTF 第二次内部训练赛Writeup_第25张图片

Web

签到题

4位密码, 爆破完事, 出来1314
WUST CTF 第二次内部训练赛Writeup_第26张图片

有点像甜饼

明示cookies, 打开一看, 这不是我熟悉的JWT吗? 我开发也用这个
在这里插入图片描述
WUST CTF 第二次内部训练赛Writeup_第27张图片
加密方式从HS256改为none, 魔改body部分guest为admin, permission为true, 重新拼接
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4iLCJwZXJtaXNzaW9uIjoidHJ1ZSJ9.
发送即可

CRYPTO

be@r

与熊论道, 不多说
WUST CTF 第二次内部训练赛Writeup_第28张图片

MISC

还是写题爽

一个带密码压缩包, 内容
WUST CTF 第二次内部训练赛Writeup_第29张图片哇这不是熟悉的brainfuck吗, 建议下次使用whitespace, 在线运行下即有

解压后得到一个二维码, 补三个角扫一扫就出来了, 懒得复现了
WUST CTF 第二次内部训练赛Writeup_第30张图片

Cry

winhex拉最下面
WUST CTF 第二次内部训练赛Writeup_第31张图片

你可能感兴趣的:(CTF)