Easy_calc

本文讲述了如何利用PHP字符串解析技巧绕过网站防护,通过`var_dump()`和`scandir()`函数发现并读取目录信息的过程,重点介绍了`var_dump()`、`scandir()`和`file_get_contents()`在渗透测试中的应用。
摘要由CSDN通过智能技术生成

在着手这道题之前 ,我们需要,我们需要一些PHP字符串解析的知识

地址:https://www.freebuf.com/articles/web/213359.html

问题分析

在这里插入图片描述

老规矩,在拿到一个网站后,先查看robots.txt协议

在这里插入图片描述

好的,又没有任何东西。继续,返回F12查看源码
在这里插入图片描述


    $('#calc').submit(function(){
        $.ajax({
            url:"calc.php?num="+encodeURIComponent($("#content").val()),
            type:'GET',
            success:function(data){
                $("#result").html(`<div class="alert alert-success">
            <strong>答案:</strong>${data}
            </div>`);
            },
            error:function(){
                alert("这啥?算不来!");
            }
        })
        return false;
    })

$("#content").val()   # JQuery语法 用来获取HTML中属性ID='content' 的值
encodeURIComponent()  #js 函数,用来将字符串作为url组件进行编码

// 这段代码主要是获取content里面的内容,然后编码,和calc.php?num= 进行拼接

(encodeURL() 和encodeuricomponent()的区别可点击次处查看)

我们访问一下/calc.php

在这里插入图片描述

发现calc.php就是对传入content中的内容的一个非法字符过滤

img

在简单了解了PHP字符串解析过程后,我们可以构造playload

/calc.php? num=phpinfo()   # 注:?和num之间有个空格,你也可以使用 + 代替
/calc.php?+num=phpinfo()

在这里插入图片描述

出现以上情况,表明我们已经绕过了waf
成功绕过waf之后,第一想法是看看目录中有没有flag的相关信息,

在这里插入图片描述

由于calc.php中出现了eval()函数,所以我首先尝试的是使用system(“ls”),由于calc.php又对输入进行了过滤,所有我有用ascii吗绕过 “ 的ascii值为34,但是行不通

那再试试PHP

PHP中有几个常用来查看目录与文件信息

scandir(directory,sorting_order,context);		# 返回指定目录中的文件和目录的数组。
参数描述
directory必需。规定要扫描的目录。
sorting_order可选。规定排列顺序。默认是 0,表示按字母升序排列。如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。
context可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。
void var_dump ( mixed $expression [, mixed $... ] )		# 用来输出变量的相关信息
#   $ expression: 需要输出的变量
file_get_contents(path,include_path,context,start,max_length)		# 将整个文件读入
参数描述
path必需。规定要读取的文件。
include_path可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。
context可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

可以点击一下简单了解个函数的使用方法以及实例

var_dump()

scandir()

file_get_contents

回到正题,继续构建playload

num=var_dump(scandir(chr(47)))

在这里插入图片描述

可以看到在根目录下发现了一个叫f1agg的目录或文本

ok,继续使用file_get_contents()尝试读取

+num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

在这里插入图片描述

完工

总结

  1. 通过本题,需要了解以及熟知php的字符串解析

img

img

这两张图能够基本反映关键部分

  1. 熟练掌握php中读取文件和目录的三个函数

    var_dump() # 输出变量的相关信息

    scandir() # 获取指定目录下的目录和文件,返回值为数组

    file_get_contents() # 返回文件内容,

图能够基本反映关键部分

  1. 熟练掌握php中读取文件和目录的三个函数

    var_dump() # 输出变量的相关信息

    scandir() # 获取指定目录下的目录和文件,返回值为数组

    file_get_contents() # 返回文件内容,

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值