Web

PHP变量覆盖漏洞---零零一

vFREE
2021-03-23 / 0 评论 / 274 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年12月08日,已超过291天没有更新,若内容或图片失效,请留言反馈。
PHP是最好的语言!!!
PHP是世界上最好的语言表情包合集



$$引发的覆盖漏洞


此时输出的信息是"人畜无害"的,但是如果在$a前面再加上一个$的话,那输出的内容就不一样了,如图所示:



考察的题目一般都是考察全局变量,像这样子的:



如果在题目源码中有看到两个$的话,先传入一个GLOBALS,惊喜接种而来




extract引发的变量覆盖漏洞
extract将数组中的变量作为值,在extract中使用已有值的名字,并且内容变化的话,就会覆盖原有的值

本来a是等于123,b是等于456的,但是使用数组给已有值名(a和b)赋不一样值,并且使用extract输出了值,因此这就成为了一个变量覆盖漏洞
使用extract输出一个数组,数组的键名就是变量名,值名就是变量名的值

题目考察一般考察用if语句判断用户输入的值和已有的某个值是否相等,相等则输出flag,反之啥也没
比如这样子的:



传入两个参数(flag和get),可以置空(/?get=&flag=)或者传入两个相同的值(/?get=1&flag=1)




parse_str使用不当导致覆盖漏洞


parse_str会将一个变量重新注册,parse_str里面的值,将会覆盖掉原有的值,就像上面那样,原本a是abcde,经过parse_str注册后,变成了12345

题目考察也是传入一个"传新"的变量,和比较值相等就好了

传入:/?a=flag=123;(123可以是任意值)



审计题目代码的时候,多关注一些危险函数,通过危险函数快速定位考察的内容
然后对症下药,一下子把题目给收了





注:部分图片源自于网络,如有侵权,请联系删除!!!谢谢








0

评论 (0)

取消