CTFer——blogs——php中intval()函数的绕过总结
intval()函数:
用于获取变量的整数值,可使用指定的base进制转换
绕过思路总结:
(1):进制类型转换
if(23 != $_GET['i']){
if(23 == intval($_GET['i'],0)){
echo '漏洞利用成功';
}
}else{
echo 'NONONO';
}
此时过滤了23,可以转为其他进制,比如0x17
(2):弱比较
if($_GET['a']!=$_GET['b']) {
if (intval($_GET['a']) == intval($_GET['b'])) {
echo '漏洞利用成功';
}
}else
echo 'NONONO';
因为使用intval()转换数组类型时,不关心数组中的内容,只判断数组中有没有元素;
所以,当数组中有值时,返回值为1;1==1,漏洞利用成功。
//当网址处输入?i[]= 时后端接收的值为1,因为数组中会带有一个元素即空字符串。
(3):增加小数位
题目同上,因为intval函数默认会将小数转换为整数,所以构造两个不同的小数即可
(4):转换字符串
intval()函数转换字符串时,会判断字符串是否以数字开头;
//当字符串以数字开头,就会返回1个或多个连续的数字;
//当字符串以字母开头,就会返回0;
(5):取反
intval(~10):-11;intval(~1):-2;intval(~~10):10;
&&绕过思路:当某个数字被过滤时,可以两次取反来绕过;
var_dump(intval(~10)); -11
var_dump(intval(~~10)); 10
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】