【攻防世界】simplePHP PHP代码审计
EASY PHP漏洞
打开 simplephp 这道题我们拿到的信息。
首先是可以看到代码中有两个 GET,说明这道题可以通过构造 url GET请求来渗透。
代码中出现了”==”,这个在 php 中是弱类型比较,弱类型比较与“===”不同,不会要求他们格式也相同,而是会先将两个不同格式的变量转换为相同格式再比较,对于“$a==0&&a”我们可以通过构造 0 的 url 编码来绕过,首先 GET 请求的时候会先一次解码,所以这里的 0 我们要二次编码,编码成%2530,然后在==这里会转换成 0 通过,在判 a 为真这里也会通过,因为不会转换类型。
对于 b 的构造,要求其大于 1234,首先先来了解 php 中的各类型转换:
string -> int,会扔掉除了 int 类型以外的所有符号,在 php 比较里面也是这样,比如拿字符串和 int 类型做比较,会导致字符串类型过滤掉除了 int 以外的,所以不能比较 ascii 码。
以此类推,会转换成被对比对象的格式,其他格式一律清除。
php 代码:
结果:
所以在这里,b 那边有个判断是否是数字类型的函数,我们需要绕过这个函数,所以必须是字符串形式,又要要求大于 1234,于是我们构造 b=1235a (前面的数字比 1234 大)即可。
对于此题,我们构造:
/?a=a=%2530&&b=%34%34%34%34%41 即可获得 flag。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 貳壹肆の博客!
评论