ctfshow-web-php特性

  1. web89
    绕过preg_match函数,intval函数

    returns 1; // 如果匹配到
    returns 0; // 如果未匹配到
    returns FALSE; //发生错误时
    preg_match只能处理字符串,当传入的是数组时会返回false,跳出if

    intval()函数可以获取变量的
    0:失败 或 空array返回0
    1:非空array返回1
    其他integer值:成功时返回$var的integer值

    ?num[]

  2. web90
    绕过intval函数
    汇总一下intval()函数漏洞的绕过思路(转自士别三日wyx):
    #当某个数字被过滤时,可以使用它的 8进制/16进制来绕过;比如过滤10,就用012(八进制)或0xA(十六进制)。?num=0x117C
    #对于弱比较(a==b),可以给a、b两个参数传入空数组,使弱比较为true。
    #当某个数字被过滤时,可以给它增加小数位来绕过;比如过滤3,就用3.1。?num=4476.1
    #当某个数字被过滤时,可以给它拼接字符串来绕过;比如过滤3,就用3ab。(GET请求的参数会自动拼接单引号)。?num=4476a
    #当某个数字被过滤时,可以两次取反来绕过;比如过滤10,就用~~10。
    #当某个数字被过滤时,可以使用算数运算符绕过;比如过滤10,就用 5+5 或 2*5。
    #按位左移操作将二进制数向左移动指定的位数,并在右侧用零填充。?id=125<<3表示1111101,将其左移3位后,得到 1111101000。将该二进制数转换为十进制,结果为1000。

  3. web91

if(preg_match('/^php$/im', $a)){
    if(preg_match('/^php$/i', $a)){
        echo 'hacker';
    }
    else{
        echo $flag;
    }

/m表示多行模式,我们用换行的**%0a**就可以绕过。
?cmd=%0aPHP

  1. web92
    intval的进制绕过,八进制和十六进制都可以绕。
    ?num=010574(八进制)
    ?num=0X117C(十六进制)

  2. web93
    限制了字母,所以用8进制。

  3. web94
    strpos函数表明输入一定要有0,但是强=表明0不能在第一位,同时不许传入字母。
    小数点绕过:?num=4476.02
    ?num=%20010574
    ?num=%0a010574

  4. web95
    ?num=%20010574

  5. web96
    get直接传参给highlight_file,所以不能用?*等模糊匹配。
    既然直接==传参,所以就不直接等于flag.php但是指向的是flag.php就行。
    直接在前面增加一个本文件夹./就能绕过。

  6. web97
    在网上搜到大神的总结。

https://www.cnblogs.com/Rain99-/p/12737244.html

今晚上在家弄,这b电脑连个hackbar都咩有,不要说bp了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值