关于php命令执行代码的小技巧,新思路,值得收藏
原始信息来自知识星球:代码审计
代码
$queryString = http_build_query($_GET);
parse_str($queryString, $res);
$res['first']($res['arr']);
http://localhost/1.php?first=system&arr=whoami
这段PHP代码的作用是接收通过GET请求传递的参数,并将这些参数构建成一个查询字符串(query string)。然后,它将查询字符串解析为一个关联数组(associative array)$res。接下来的代码尝试执行数组中$res['first']所指定的函数,并将$res['arr']作为参数传递给这个函数。
示例URL中,GET请求的参数为first=system和arr=whoami。这意味着$res['first']将被设置为字符串 "system",而$res['arr']将被设置为字符串 "whoami"。
由于$res['first']被设置为字符串 "system",接下来代码会尝试执行名为 "system" 的函数,但实际上这是一个系统命令,而不是函数名。这段代码试图通过执行系统命令来实现与操作系统交互。在这个例子中,它会执行 system('whoami') 命令,该命令用于获取当前执行命令的用户的用户名。所以,当你访问 http://localhost/1.php?first=system&arr=whoami 时,它会执行命令 system('whoami') 并返回命令执行结果,即当前用户的用户名。
原文始发于微信公众号(利刃信安攻防实验室):【奇技淫巧】关于php命令执行代码的小技巧,新思路,值得收藏
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论