• 实验吧 Once more


    0x1函数解析

    ereg():

                  *用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。

                    搜索字母的字符是大小写敏感的。

                  * 此函数存在两个漏洞:

                       ①%00截断及遇到%00则默认为字符串的结束

                       ②当ntf为数组时它的返回值不是FALSE

                  *科学计数法的表示是1e9=1000000000,e一定是小写

    strpos():

                     *查找字符串在另一字符串中第一次出现的位置。

                      *例:stpos("ehfvfslnvjsdknv","ehfv")

                               查找ehfv在字符串中第一次出现的位置

    拓展eregi():此函数与ereg()的区别在于此函数不区分大小写

    0x2题目解析

    题目链接:http://www.shiyanbar.com/ctf/1805

    #1.查看源码:

    <?php
    if (isset ($_GET['password'])) {
    	if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
    	{
    		echo '<p>You password must be alphanumeric</p>';
    	}
    	else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
    	{
    		if (strpos ($_GET['password'], '*-*') !== FALSE)
    		{
    			die('Flag: ' . $flag);
    		}
    		else
    		{
    			echo('<p>*-* have not been found</p>');
    		}
    	}
    	else
    	{
    		echo '<p>Invalid password</p>';
    	}
    }
    ?>
    

    ereg():输入的password必须是大小写字母和数字

    strlen():输入值必须大于999999999并且长度小于8

    strops():输入的值中必须含有‘*-*’

    #2.总结步骤一中的要求后,利用ereg函数的截断漏洞可以构造playload:1e9%00*-*

         由于做了url编码,所以需要在url里面直接传参

     得到flag

                    

  • 相关阅读:
    readonly const
    多线程的安全性
    【C++】operator运算符重载
    C++ 多态的实现及原理(转载)
    C语言宽字符处理函数对照表
    UTF8编码规则(转)
    PE文件结构(转)
    C语言中宏定义
    汇编语言移位指令
    数组指针应该结合二维数组多维数组来理解
  • 原文地址:https://www.cnblogs.com/qingwuyou/p/10687460.html
Copyright © 2020-2023  润新知