代码审计的艺术系列—第六篇

0x00前言:

作者:HackBraid,乌云核心白帽子。真名李斌,现汽车之家高级安全工程师。就职于奇虎360多年,熟悉代码审计、渗透测试等Web安全领域。白帽子分享之代码审计的艺术系列(二、三、四季)是对绕过全局防护的场景进行的总结。没看前几季的同学,可以关注下。 代码审计的艺术系列—第一篇 代码审计的艺术系列—第二篇 代码审计的艺术系列—第三篇 代码审计的艺术系列—第四篇 代码审计的艺术系列—第五篇接下来两篇介绍全局防护存在的盲点,之前有上篇(第五季)的介绍,现在是下篇: 盲点如下:①FILES注入,全局只转义掉GET、POST等传来的参数,遗漏了FILES;

②变量覆盖,危险函数:extract()、parse_str()、$$。

0x01准备:

知识储备:php基础、MySql入门工具:notepad++
服务器环境:wamp
测试代码和sql: 文档里

0x02全局防护盲点总结下篇的脑图: 

代码审计06-01

0x03FILES注入:

FILES注入一般情况是是因为上传时把上传的名字带到insert入库产生的,这里看下tipask问答系统,首先看看它的全局防护是怎么处理的: 代码审计06-code1
可以看到对get和post传来的数据进行了addslashes特殊转义处理,对$_FILES没有任何处理操作,我们全局搜索$_FILES,发现/control/attach.php有上传处理,我们跟进: 代码审计06-code2 代码审计06-code3
可以看到这句$_ENV[‘attach’]->add($clientFile[“name”]…),将$clientFile[name] = $_FILES[“upfile”][name]带入了如下add入库的操作,从而造成注入。
代码审计06-code4
上传一个文件,然后修改文件名称为以下代码即可获取管理员账户密码:
代码审计06-code5
数据库里成功将管理员账户密码插入到attach表中:
代码审计06-result01

0x04变量覆盖:

出现比较多的是 extract函数,例如extract($_POST)会直接从POST数组中取出变量,覆盖掉之前的一些变量。
代码审计06-code6
浏览器里post直接传a=1发现成功覆盖了变量a的值
代码审计06_result02
之前出现过案例是覆盖表前缀上,例如sql执行语句如下:
select title,content from {$pre}news where id=1
然后攻击者直接浏览器提交pre=“获取敏感信息的语句”来覆盖表前缀从而实现注入攻击。
$$变量覆盖
原理其实跟上面一样,有个很经典的$$变量覆盖的代码:
代码审计06-code7
测试发现成功覆盖了变量a
代码审计06_result03
本篇的内容,我们就介绍到这里,下一篇欢迎持续关注。
 

原创文章,转载请注明: 转载自安兔|anntoo.com 互联网安全新媒体平台

本文链接地址: 代码审计的艺术系列—第六篇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值