第四届“强网”拟态防御国际精英挑战赛Writeup
Crypto
拟态签到题
base64解码得到flag:flag{GaqY7KtEtrVIX1Q5oP5iEBRCYXEAy8rT}
Misc
WeirdPhoto
爆破高宽,进而得到字符串:TIEWOFTHSAEOUIITNRBCOSHSTSAN

附上爆破脚本
1 | import binascii |
接着就纯靠猜不断尝试最后确认是栅栏密码(key=4)得到压缩包密码: THISISTHEANSWERTOOBSFUCATION

解压查看文件头很明显这是一个pdf文件,010更改下pdf头

最后通过工具wbs43open解密得到flag:flag{th1s_ls_thE_f1n4l_F14g_y0u_want}
BlueWhale
追踪tcp流发现了password:th1sIsThEpassw0rD

接着我们进行明文攻击得到压缩包密码:!2b$3&Ec

最后lsb隐写得到flag:flag{F1nallY_y0uve_f0unD_1t}

mirror
爆破高宽发现这图是湖中倒影
1 | import binascii |
然后在010中观察发现其存在两张图,像镜子一样倒过来了,并且它是每十六位翻转的
1 | data = open('full.png', 'rb').read() |
接着我们盲水印提示 CRC error ,修一下再来一次然后倒置得到字符串:32effq8aa8374a02a9p1636ae8901qa0

hint:2-5 e-6 9-a p-b q-d
最后根据hint转换得到flag:flag{356ffd89983749059ab1e3e968a01d90}
bar
参考文章:https://blog.csdn.net/kzhuangood/article/details/72953354
首先分离GIF提取出每一帧,接着我们规定黑为1,白为0,灰为空格,摩斯密码得到提示:CODE93
1 | 1010 111 100 0 11110 00011 |
然后还是按黑1白0来,每九个为一组对照code93编码表得到:F0C62DB973684DBDA896F9C5F6D962 (后面还有一大块空白的是需要我们去算的校验位

接着我们通过在线网站输入条码号生成条形码,而它这校验位其实是已经自动算出来的,我们只要根据其结构即可得到最后两位
hint:1、观察得到字符串在code93在线网站生成的条形码停止字符的前两位字符 2、flag内容都是小写英文字母
最后根据hint得知应该是小写的,进而得知最后两位校验码为U和M

1 | 大写情况: |
整理得到flag:flag{f0c62db973684dbda896f9c5f6d962um}
Web
zerocalc
直接readfile读flag:flag{Hf4ulmUeLzShDRRfHdS4E8UhrlYbyMM6}

new_hospital
首先信息收集,dirb/御剑扫一下目录

接着我们发现这cookie处会给api赋值base64编码的,进而得知这有一个任意文件读取漏洞

然后我们通过修改api读取会发现它响应包的头还是2.js,于是我们回想前面扫到它有个old版本的,最后我们改old和api读取flag相对路径得到flag:flag{wI91wqE1yQ3599fU5RFv3V2L7e0kquMm}

EasyFilter
1 |
|
首先题目使用了open_basedir,设定了只能访问当前目录的文件
1 | ini_set("open_basedir","./"); |
这里我们可以在一个文件里写入php代码来绕过,比如我们在一个文件里写入
1 | echo system('ls /'); |
我们再访问这个文件,是不是就可以直接查看根目录,这题就是类似的思路
下面就是有2种模式,一种是action=w时,他首先会创建一个files目录
1 | @mkdir("./files/"); |
然后将创建一个随机的5位字符,16进制加密后给file,你可以理解这是将文件名加密了
1 | string random_bytes(int $length) |
生成适合于加密使用的任意长度的加密随机字节字符串,例如在生成salt、密钥或初始化向量,bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值
1 | $file = bin2hex(random_bytes(5)); |
然后将我们写入的东西,base64加密后传入./files/filename中,再返回到屏幕上
1 | file_put_contents("./files/".$file,base64_encode($content)); |
第一种是写,第二种就是读了,这里读的话,就是直接读,不用base64加密
1 | elseif($_GET['action'] == 'r'){ |
我们常见的php伪协议读数据的方法是
1 | php://filter/read=convert.base64-encode/resource=file |
他这里给的是
1 | php://filter/resource=file |
他省略了encode加密的过程,我们写的时候是不是将文件的内容进行base64加密后再传入文件,这样我们的php代码就直接会成为base64密文,并不会作为php代码执行,我们在文件包含的时候将其解密,他就会变成php代码执行了
1 | php://filter/resource=./files/read=convert.base64-decode/resource=file |

得到flag:flag{Cuw5RV9SvBUJR1ACBgLBm83p2VZe7lRG}

ezPickle
pickle反序列化
Jack-Shiro
原题:https://www.redmango.top/article/61#javaweb
Give_me_your_0day
当我们安装tp的时候说文件没写成功,于是发现应该是恶意mysql构造任意文件读取(当数据库用不了的时候会报数据库连不上,数据库能用的时候会说无法自动创建文件需要手段创建,说明去连了mysql的,再加上tp又没啥漏洞