MISC
CyberChef’s Secret
本题就是MISC的签到题,打开后是一串base编码,
M5YHEUTEKFBW6YJWKZGU44CXIEYUWMLSNJLTOZCXIJTWCZD2IZRVG4TJPBSGGWBWHFMXQTDFJNXDQTA=
放入随波逐流中解密
该代码经历了base32-base58-base64 然后得到正确flag
机密图片
本题打开是一张二维码图片,先用CQR扫描看看里面有什么
说明考点并不在这,用010打开也没有得到有效信息,那就用StegSolve打开图片,在Data Extract将RGB都调到最低,得到flag
流量!鲨鱼!
打开后得到一个pcapng文件,里面很多http请求,将其通过WireShark导出
发现可疑包
追踪HTTP流发现里面有一串base代码
放入随波逐流base64解密俩次得到flag
压缩包们
打开得到一个空白文件,通过010打开发现其是一个压缩包文件且文件头错误,将文件头修改
得到的压缩包里面包含着一个压缩包,解压后发现里面的txt文件需要密码才能打开,且有一段base代码的注释,解密后得到提示
说明可以通过爆破来得到txt文件里面的flag,通过Ziperello进行爆破,得到密码
打开txt文件得到flag
空白格
打开后就是一面空白,且通过Ctrl+A全选发现其没有规则,不考虑考morse的可能,
经过上网搜索学习,发现其考点为Whitespace语言,解密后得到flag
解密网站whitespace在线运行,在线工具,在线编译IDE_w3cschool
隐秘的眼睛
根据题目与所给图片提示,可知是SilentEye隐写,利用SilentEye工具Decode俩次得到flag
WEB
打开网站提示管理员泄露俩个敏感信息
通过python脚本尝试一下
import requests
if __name__ == '__main__':
# url为被扫描地址,后不加‘/’
url1 = 'http://4b6a43da-9744-47e0-b78d-7c4889a38fc2.node4.buuoj.cn:81/'
# 常见的网站源码备份文件名
list1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
# 常见的网站源码备份文件后缀
list2 = ['tar', 'tar.gz', 'zip', 'rar']
for i in list1:
for j in list2:
back = str(i) + '.' + str(j)
url = str(url1) + '/' + back
print(back + ' ', end='')
print(requests.get(url).status_code)
下载后得到俩个敏感信息
Begin of Upload
如题目所述,一个简单的上传题,无法直接上传php文件,所以先上传一个写有一句话木马的jpg图片类型的文件并通过BP抓包
将其后缀修改为.php再发送
然后通过蚁剑连接从根目录下得到flag
Begin of HTTP
第一步 Get传参
第二步 POST传参
secret被藏在调试器中
POST传参后进入下一步并抓包
第三步 修改COOKIE
此时我们的power为hacker,将其修改为ctfer即可进入下一步
第四步 浏览器修改
即将User-Agent内容修改为NewStarCTF2023即可进入下一步
第五步 增加访问所需网站
即将Referer中的内容修改为newstarctf.com即可进入下一步
第六步 Fake IP
ErrorFlask
看到flask我想到了ssti注入,通过ssti注入得到flag
即url+?number1=1&number2=2
Begin of PHP
第一关
很简单的MD5弱类型比较
构造Payload url+?key1=QNKCDZO&key2=240610708
第二关
第二关可以通过数组绕过,php哈希函数的特性,当处理数组类型的传参时其会返回null,则就形成了null=null满足了强等于的条件
构造Payload url+?key1=QNKCDZO&key2=240610708
POST:key3[]=1
第三关
strcmp函数特性,当传入的参数为数组时即返回null,即传入key4为数组,则返回null,null=0符合其条件
构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1
POST:key3[]=1
第四关
通过is_numeric()函数使传入的key5不能为纯数字且必须大于2023,则可以通过在2024后加字母来进行绕过
构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1&key5=2024a
POST:key3[]=1
第五关
上面的正则表达式过滤了大小写字母和数字,而extract所导致的可以使本题也可以通过数组进行绕过
构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1&key5=2024a
POST:key3[]=1&flag5[]=1
得到flag
R!C!E!
首先打开本题环境可以看到上述php代码
需要我们先找到一个$password进行MD5加密后前六个值为“c4d038”,然后在输入一个可执行的$code能够避开所过滤的值,从而得到flag
我们可以通过MD5碰撞得到为我们需要的$password,其值为 : “114514”
然后会发现无论我们怎么去输入$code,只要传参为e_v.a.l都无法使其执行成功,这是,这是因为在php中,空格和点无论是get或post传参都无法正常转换
所以为了防止其被过滤,我们可以通过修改_来解决,这也是利用php版本问题
当
PHP版本小于8
时,如果参数中出现中括号[
,中括号会被转换成下划线_
,但是会出现转换错误导致接下来如果该参数名中还有非法字符
并不会继续转换成下划线_
,也就是说如果中括号[
出现在前面,那么中括号[
还是会被转换成下划线_
,但是因为出错导致接下来的非法字符并不会被转换成下划线_
这就说明,如果我们将’-‘修改为’[‘,则后续的俩个.不会被更改为’-‘,而[也会被正常转换为’_’
所以我们构造如下的$code
payload: POST: password=114514&e[v.a.l=echo
tac /f*
;
EasyLogin
本题打开为一登录网站,如果登录进去后就是一个类似于chatgpt的东西,考虑其应该从登录页面下手,发现其为弱密码爆破,通过BP抓包
通过BP抓包发现其密码也被MD5加密过
通过弱密码爆破,发现其密码为000000,这里图省事直接输入爆破了
通过代理中的HTTP历史记录,可以发现一个302跳转,点击进去发现里面有着flag