加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长资讯 > 评论 > 正文

无字母数字Webshell之提高篇

发布时间:2018-10-18 18:07:44 所属栏目:评论 来源:phithon
导读:前几天有同学提出了一个问题,大概代码如下: ?php if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)35){ die(Long.); } if(preg_match(/[A-Za-z0-9_$]+/,$code)){ die(NO.); } eval($code); }else{ highlight_file(__FILE__); } 这个代

其中,glob支持用[^x]的方法来构造“这个位置不是字符x”。那么,我们用这个姿势干掉/bin/run-parts:

无字母数字Webshell之提高篇

排除了第4个字符是-的文件,同样我们可以排除包含.的文件:

无字母数字Webshell之提高篇

现在就剩最后三个文件了。但我们要执行的文件仍然排在最后,但我发现这三个文件名中都不包含特殊字符,那么这个方法似乎行不通了。

继续阅读glob的帮助,我发现另一个有趣的用法:

无字母数字Webshell之提高篇

就跟正则表达式类似,glob支持利用[0-9]来表示一个范围。

我们再来看看之前列出可能干扰我们的文件:

无字母数字Webshell之提高篇

所有文件名都是小写,只有PHP生成的临时文件包含大写字母。那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。

翻开ascii码表,可见大写字母位于@与[之间:

无字母数字Webshell之提高篇

那么,我们可以利用[@-[]来表示大写字母:

无字母数字Webshell之提高篇

显然这一招是管用的。

构造POC,执行任意命令

当然,php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了。

最后,我传入的code为?>,发送数据包如下:

无字母数字Webshell之提高篇

成功执行任意命令。

【编辑推荐】

  1. JavaScript、PHP、Python等5款主流编程语言爆安全漏洞
  2. 浅谈Web安全验证码
  3. CSRF攻击与防御,Web安全的第一防线(源码,实战,5分钟科普文)
  4. 你不知道这10个Web安全漏洞,就别说自己是黑客
  5. 浅谈PHP安全规范
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读