首页
论坛
专栏
课程

[原创]BugkuCTF-WEB-矛盾

2018-11-16 05:05 5223

[原创]BugkuCTF-WEB-矛盾

2018-11-16 05:05
5223

本帖来自我的CSDN,不晓得这样算不算原帖,如有违规请联系我整改

这是最近几天刷的题目,望共勉。

http://123.206.87.240:8002/get/index1.php

方法1.观察题目,应该是使用is_numeric遇到%00截断的漏洞,这里构造

http://123.206.87.240:8002/get/index1.php?num=1%00

得到flag


方法2.观察题目,应该是使用is_numeric遇到%20截断的漏洞,这里构造


方法3

既不能是数字,又要和1相等 
双等号===弱类型 
就这个了,只要get的参数是数字1开头后面都是字母比如“1aaaa”这样,双等号判断的时候要类型转换,1aaa就转换成1了,而它也很明显不是数字(!is_numeric)

http://123.206.87.240:8002/get/index1.php?num=1das



注:

Intval函数获取变量整数数值
Intval最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval(‘1000000000000’) 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。

这个有个应用就是在判断数值是不是回文上,如果参数为2147483647,那么当它反过来,由于超出了限制,所以依然等于2147483647。即为回文。

is_numeric()  判断变量是否为数字或数字字符串,不仅检查10进制,16进制是可以。

is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!

该函数还可能造成sql注入,例如将‘1 or 1'转换为16进制形式,再传参,就可以造成sql注入

intval($req["number"])=intval(strrev($req["number"]))  如果要求不是回文,但又要满足这个条件,可以用科学计数法构造0=0:number=0e-0%00








[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上一主题 下一主题
最新回复 (1)
风介zZ 2019-2-15 09:25
2
0
这里应该不是特定针对%20、%23的截断问题吧?后面是其它也可以的~
游客
登录 | 注册 方可回帖
返回