CTF

ctf.show的两题红包题

Posted on 2020-02-12,2 min read

第一题:MISC
下载地址:https://www.lanzous.com/i98rs2j
解压出了86张图片。发现是一个GIF分帧出来的
尝试合成GIF。发现没东西
每张图片后面都存在一串Base64

根据经验。将Base64拼接解码都会得到一个新的文件

import base64
data2=''
for i in range(1,87):
    f=open(str(i)+'.jpg').read()
    data=f.split(';')[-1]
    data2+=data.strip()
    print data2

将data2解码。发现是个PNG。写入png得到二维码。

扫一下就拿到了flag

第二题:Web
主页空空如也。源代码发现hint

代码量比较少。一题Bypass正则RCE

首先分析下第一个正则

A-Za-oq-z0-9
这里有个小问题。一般都是A-Za-z0-9
这里a-0q-z没有过滤p。
看到这。就想到了无数字字母Webshell
第二个正则。过滤了^~。那么就无法构造无数字字母webshell

经过尝试<>?/`.;没有过滤
尝试用这几个进行RCE
P神在这块已经讲的非常清楚了:https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html
首先。发送一个POST包上传文件会在/tmp目录下生成一个临时文件
. 文件名可以用来执行文件。不需要文件有X权限
这题没有过滤?。那么可以通过通配符去匹配文件名。PHP缓存名为php+6个随机字符
由于之前正则没过滤p。那么

/tmp/phpf85jb8可以表达为/???/p?p??????

. /???/p?p??????即可执行我们上传的缓存文件

还有一种思路。就是执行/bin/cp /flag.txt .
前提是得知道flag路径。假设。人家给你来个var目录。岂不是人傻了

下一篇: [CISCN2019 华北赛区 Day1 Web2]ikun(python反序列化)→