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

 

posted @   Heck1ng  阅读(535)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示