手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

PHP Parametric Function RCE

来源£º本站整理 作者£º佚名 时间£º2019-04-04 TAG£º 我要投稿

最近做了一些php无参数函数执行的题目£¬这里做一个总结£¬以便以后bypass各种正则过滤¡£
大?#28388;?#36335;如下£º
1.利用超全局变量进行bypass£¬进行RCE
2.进行任意文件读取
什么是无参数函数RCE
传统意义上£¬如果我们有£º
eval($_GET['code']);
即代表我们拥有了“一句话木马”£¬可以进行getshell£¬例如£º

但是如果有如下限制£º
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {   
    eval($_GET['code']);
}
我们会发现我们使用参数则无法通过以下正则的校验£º
/[^\W]+\((?R)?\)/
而该正则£¬正是我们说的无参数函数的校验£¬其只允许执行如下格式函数£º
a(b(c()));
a();
但不允许如下格式£º
a('123');
这样一来£¬失去了参数£¬我们进行RCE的?#35759;?#21017;会大幅上升¡£
而本篇文章旨在bypass这种限制£¬并做出一些更?#37327;?#26465;件的Bypass¡£
法1£ºgetenv()
查阅php手册£¬有非常多的超全局变量£º
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
我们可以使用£º
$_ENV
对应函数为£º
getenv()[object Object]
虽然getenv()可获取当前环境变量£¬但我们怎么从一个偌大的数组中取出我?#20405;?#23450;的值成了问题¡£
这里可以使用方法£º

效果如下£º

但是我不想要下标£¬我想要数组的值£¬那么我们可以使用£º

两者结合使用即可有如下效果£º

我们则可用爆破的方?#20132;?#21462;数组中任意位置需要的值£¬那么即可使用getenv()£¬并获取指定位置的恶意参数¡£
法二£ºgetallheaders()
之前我们获取的是所有环境变量的列表£¬但其实我们并不需要这么多信息¡£仅仅http header即可¡£
在apache2环境下£¬我们有函数getallheaders()可返回¡£
我们可以看一?#36335;?#22238;值£º
array(8) {
    ["Host"]=> string(14) "106.14.114.127"
    ["Connection"]=> string(10) "keep-alive"
    ["Cache-Control"]=> string(9) "max-age=0"
    ["Upgrade-Insecure-Requests"]=> string(1) "1"
    ["User-Agent"]=> string(120) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
    ["Accept"]=> string(118) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
     ["Accept-Encoding"]=> string(13) "gzip, deflate" ["Accept-Language"]=> string(14) "zh-CN,zh;q=0.9"
}
我们可以看到£¬成功返回了http header£¬我们可以在header中做一些自定义的手段£¬例如£º

此时我们再将结果中的恶意命令取出£º
var_dump(end(getallheaders()));

这样一来相当于我们将http header中的sky变成了我们的参数£¬可用其进行bypass无参数函数执行¡£
例如£º

那么可以进一步利用http header的sky属性进行rce¡£

法三£ºget_defined_vars()
使用getallheaders()其实具有局限性£¬因为他是apache的函数£¬如果目标中间件不为apache£¬那么这种方法就会失效£¬我们也没有更加普遍的方式呢£¿
这里我们可以使用get_defined_vars()£¬首先看一?#28388;?#30340;回显¡£

发?#21046;?#21487;以回显全局变量有如下几种£º
$_GET
$_POST
$_FILES
$_COOKIE
我们这里的选择也就具有多样性£¬可以利用$_GET进行RCE£¬例如£º

[1] [2]  下一页

¡¾声明¡¿:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的£¬并不代表本站赞同其观点?#25237;?#20854;真实性负责£¬仅适于网络安全技术爱好者学习研究使用£¬学习中请遵循国家相关法律法规¡£如有问题请联系我们£¬联系邮箱[email protected]£¬我们会在最短的时间内进行处理¡£
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载
        ¹ºÂò²ÊƱȨÍþÍøÖ·
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中