这个代码审计有点意思

    代码审计(南邮ctf easy php) - 图1

    进入题目

    代码审计(南邮ctf easy php) - 图2

    意思是让我们逐个绕过咯

    那就先第一个绕过:(需要的储备知识为正则表达式)

    代码审计(南邮ctf easy php) - 图3

    这个正则的意思就是:

    ‘^’:这个符号的意思是开头是以23333开头,$绕过就用的换行符来绕过:%0a -> 这是换行符

    因为$的默认匹配是行尾,所以也就说,用%0a来定义为行尾,就能绕过。


    所以我们要绕过第1st就要先绕过这个正则,所有创建的payload:?num=23333%0a


    成功绕过第一个代码审计(南邮ctf easy php) - 图4

    开始绕过第二个:**(知识储备如下)**

    代码审计(南邮ctf easy php) - 图5

    is_numeric()函数的作用是:你传入的值必须是数字。**也就是说 $string_1 应该是一个数字串**

    md5()就是md5函数的加密

    strtr函数作用:https://www.w3school.com.cn/php/func_string_strtr.asp

    简单来说就是:md5_1这个加密字符串,会被逐个替换:** 举个例子:**

    echo strtr(“Hilla Warld”,”ia”,”eo”) 那么它输出的是 hello world

    这里有个细节:md5()这个函数的加密最大的字母只有到f(说个题外话,md5无法识别字符串)。其实代码审计(南邮ctf easy php) - 图6后面**的xhp毫无作用。只是把c替换成0**

    “==”与”===”的区别:

    代码审计(南邮ctf easy php) - 图7结果分别是true和flase

    这里**就解释一下第一个为什么是true: **

    “==”只是对值的比较(将两边的值化为同类型的再比较)。对于”==”的比较而言,若一方为数字,另一方为字符串或空或null,都会将数字一方转换为0,再做比较。

    “===”则是对值和类型进行比较。




    代码审计(南邮ctf easy php) - 图8所有**找个脚本跑一下找两个md5相同并且替换掉C也相同的数字**


    于是找到代码审计(南邮ctf easy php) - 图9这两个


    所有建立payload则是:http://nctf2019.x1ct34m.com:60005/?num=23333%0A&str1=2120624&str2=9081940

    成功绕过第二个



    最后开始绕过第三个:

    代码审计(南邮ctf easy php) - 图10

    首先第一个substr_count()该函数的意思为:计算某个字符串在变量中出现的次数:

    所有题目的意思就是说:$这些变量里的不能出现这些符号,应该为0;

    ‘_’与’%5f’都是空格的意思,那我们怎么样才能打出代码审计(南邮ctf easy php) - 图11q**_w_q呢**

    用’%20’或者’+’也可以

    所以q_w_q=q.w.q=q+w+q=q%20w%20q。

    接下来就是下面的cat,先来读一篇文章吧:https://blog.csdn.net/u012062455/article/details/78560403

    最重要的一点就是: tac和cat显示的顺序是相反的

    那就好办了嘛:果断payload:http://nctf2019.x1ct34m.com:60005/?num=23333%0A&str1=2120624&str2=9081940&q.w.q=tac+*

    这里的payload为什么前面q.w.q是用’.’ 因为php会把特殊的符号如’ { ‘转义成下划线 ‘ _ ‘;

    上面文章表示 tac要有 空格


    *为通配符:


    通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代


    替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正

    的字符。 实际上用“*Not?pad”可以对应Notepad\MyNotepad


    【*可以代表任何字符串;?仅代表单个字符串,但此单字必须存在】;


    星号(*)可以使用星号代替0个或多个字符.


    **
    问号(?)可以使用问号代替一个字符.**

    代码审计(南邮ctf easy php) - 图12