你驻足于春色中,于那独一无二的春色之中.
难得抽出时间肝了两天,应该算是参加CTF以来做出题最多的一次了
_(:з」∠)_
进制转换,先将16进制转换为10进制,再对128求余,剩下的结果转换为字符。
迷之一题
使用binwalk提取图片压缩包,发现加密,同时里面有一个ext2文件,利用Win下的ext读取工具加载后发现内容为空。
多次操作无果后,重新打开图片发现一段特殊代码:
直觉下用Pactera去解压,竟然解压成功了。
接下来的文本根据提示进行字符频度统计即可得到flag。
利用wireshark发现FTP有两个zip文件,一堆邮件,zip文件加密且格式有问题,所以无解,查询邮件发现有一张图片应该是密钥。
进行图片识别,这里很容易将l和1,0和o识别错误,所以需要手动进行更正,再将正确的密钥导入wireshark,跟踪SSL流即可得到flag。
ECB模式的分组加密可以通过改变分组位置进行攻击,这里nc上去之后可以通过输入Agent ID来操纵flag的分组位置,因此可以进行逐位爆破,
第一步进行X-Forworded-For欺骗
第二步利用Burp代理始终显示隐藏表单
第三步这里是一个时间盲注,利用sleep(ascii(a-b)),把一个时间盲注转化为布尔盲注,进行注入。
详细payload如下:
1 | test'and (sleep((ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA LIMIT 0,1),1,1))-100)));# |
最终在flag9表中中获取到flag
进入页面后发现有一个base64编码的任意文件读取,可以读取xml、class、ks等格式的文件,先读取配置文件web.xml和applicationContext.xml。
发现有一个监听器的class,下载回来后进行反编译,是一段用于加密的代码,大致逻辑是利用sdl.ks中的公钥对flag进行加密,那么我们现在就需要找到密文,发现密文是一起放进flago里然后入库的。
在主页面发现另一个连接
1 | <!--/flag/testflag/yourflag--> |
任意访问后报错发现,还有一个文件
1 | com.didichuxing.ctf.controller.user.FlagController.submitFlag |
在源码中调用接口,需要将邮箱加密后hex转码访问接口,获取到data的密文。
再将密文解密即可得到flag。
发现hint是big5,按照传统的宽字节注入无果,遂用携带%5c的big5字符去Fuzz尝试,发现如下payload可以成功。
1 | http://116.85.48.105:5033/ab393ca3-0736-4ac3-8fb5-5461d803ea87/well/getmessage/1尐'* |
构造好后就可以用sqlmap跑。
发现新的路径,最后一个可以获取到源码,然后利用第3个进行反序列化。
构造序列化字符,这里需要注意的问题是命名空间对序列化结果的影响,在这里卡了很久。
最后的payload如下:
1 | a=O%3A17%3A%22Index%5CHelper%5CTest%22%3A2%3A%7Bs%3A9%3A%22user_uuid%22%3Bs%3A36%3A%22ab393ca3-0736-4ac3-8fb5-5461d803ea87%22%3Bs%3A2%3A%22fl%22%3BO%3A17%3A%22Index%5CHelper%5CFlag%22%3A1%3A%7Bs%3A3%3A%22sql%22%3BO%3A16%3A%22Index%5CHelper%5CSQL%22%3A2%3A%7Bs%3A3%3A%22dbc%22%3BN%3Bs%3A3%3A%22pdo%22%3BN%3B%7D%7D%7D |