南邮ctf平台的/x00

来源:互联网 发布:js实现购物车计算总价 编辑:程序博客网 时间:2024/05/12 20:02
PHP strpos() 函数
strpos() 函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回 false。

PHP函数ereg()内容说明

本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。

@eval:@的作用就是忽略报错信息if (isset ($_GET['nctf'])) {        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)            echo '必须输入数字才行';        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)               die('Flag: '.$flag);        else            echo '骚年,继续努力吧啊~';    }
这道题有两种做法。
ereg处理数组,所以这里nctf这里要用nctf[],构造一个arr[],传入之后,ereg是返回NULL的,===判断NULL和FALSE,是不相等的,所以可以进入第二个判断,strpos处理数组时,也是返回NULL,注意这里的是!==,NULL!==FALSE,条件成立,拿到flag
我们还是先说数组 ereg是处理字符串的,所以,按照原理,我们将nctf构造一个arr[],传入之后,ereg是返回NULL的,===判断NULL和FALSE,是不相等的,所以可以进入第二个判断,而strpos处理数组,直接返回NULL,注意这里的是!==,NULL!==FALSE,条件成立,拿到flag。
第二种是1%00#biubiubiu,这一种比较好理解,传nctf=1%00#biubiubiu 接收到1后被截断,后面也有所需要的#biubiubiu,条件成立,拿到flag!
 
 
0 0
原创粉丝点击