第五届浙江省大学生网络与信息安全竞赛初赛-WP
战队信息
Rml
Rank: 32
解题过程
Web
nisc_easyweb
访问/robots.txt
,发现/api/record
,访问后到/test_api.php
,F12得到i=FlagInHere
,按题目要求get传参拿到flag
nisc_学校门户网站
访问学生系统,任意注册一个用户进入系统拿到flag
吃豆人吃豆魂
在index.js中搜到失败返回值,成功返回值就在上一行
base64解密拿到flag
REFTQ1RGe2YyMzViMDIzODJhMjIzZmRhNGNlMmVjNjIxNDhkOTRjfQ==
DASCTF{f235b02382a223fda4ce2ec62148d94c}
PWN
babyheap
因为程序存在uaf
,所以连续释放两个chunk
,可以获取heap段地址
,这样可以计算出tcache bin
的地址
通过覆盖tcache bin
的值,在任意地址放置chunk
,设置chunk0
的size
为0x430
,并在chunk0+0x430
的位置处构造两个0x20
字节的chunk
释放chunk0
,获取libc
地址,再利用tcache bin
,可以以最少的chunk
数,在free_hook
中写入system
函数地址
再次执行free
函数调用system("/bin/sh")
1 |
|
new_stack
赛后复现
main
函数
后门函数
后门函数会将我们输入的数据写入栈中,刚好最后8字节
可以修改X29寄存器
的值,而这个寄存器在程序中是用来临时储存函数第一个参数的寄存器,会用来修改X0寄存器
,刚好在后门函数结束后会执行一次输入输出,这时可以通过修改got表
控制程序流程
1 |
|
RE
ManyCheck
程序在check1
中会检测输入是否等于77
在check2
中输入的第一个数字的平方要等于3025,第二个数的平方要等于2401
根据reshort16
函数得知,将check3
输入的数字的高两个字节和低两个字节调换位置后要等于0x66744769
按要求输入完四个数字拿到flag
MISC
好怪哦
先将文件反转一下
1 |
|
flag.png
少了文件头,补上89 50 4e 47
crc报错,修改下高度拿到flag
神奇的棋盘
赛后复现
lsb查看0通道,发现一串加密字符,base32解密得到LastKey{Yusayyds}
首先是波利比奥斯方阵密码
手搓或者脚本
1 |
|
得到AGAXXDAGGVGGVDVADAVXDGADVGDVAADDDDFXAFAFDGDVXXDGGDGGDXDDFDDXVGXADGVDFXVVAADDXDXXADDVGGGXGXXXXGXXGGXGDVVVGGGAGAAAAGAAGGAGDDDAGAGGGAGGAGAGAAAVAAAXGXGGGXGGXGXGXXXV
加上key解ADFGVX
密码
4441534354467b64383539633431633533306166633163316164393461626439326634626166387d
十六进制转字符串得到flag
segmentFlow
赛后复现
文件很小,直接crc爆破
得到解压密码gZinflAte_BasE64
追踪流,发现sa066b32bfb3e7
的值在传递zip
文件
tshark提取出来
tshark -r segmentFlow.pcapng -Y "http.request" -T fields -e http.file_data > data.txt
提取压缩包部分
1 |
|
解压得到flag