实验吧 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

                

posted @ 2019-01-27 17:55  Ramona  阅读(203)  评论(0)    收藏  举报