sql-lab 1-10关通关秘籍

前言
刚开始接触sql-lab闯关,就感觉特别懵,不知道从哪下手,后来在网上找了一些大佬的经验与解析,慢慢的学会了怎么解析,以下解析只是个人见解,可能有些错误,大佬勿喷。
写在前面
1.information_schema 为自带数据库
table_schema数据库名
table_name 数据表名
column_name 字段名
2. 闭合方式:单引号——’ --+
双引号 —— " --+
单引号和括号—— ’ ) --+
双引号和括号—— ”)— --+
3.特别提示 千万不要遗漏空格和闭合符号
4.做完前几道题就会发现,这几道题有很多共同点,主要就是关于GET单、双引号的字符注入,以及闭合方式的主要内容。
less-1
首先判断sql语句中一共返回了多少列,对比显示页面可知3列。输入 /?id=1 判断闭合方式,输入/?id=1’–+,页面正常。该方式为单引号闭合。查看显示位,然后爆数据。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
随后,对库,表,列,数据,等依次进行爆破。见图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到此,联合查询注入完成。
Less -2 [ ]
Less -3 [ ')]
Less -4 [ ")]

这3关均按照Less-1的步骤稍微进行调整即可。(具体调整内容为[ ] 内)
Less-5
这一关用到了报错注入,就是通过输入错误语句,使需要查询的信息出现在报错的语句中。
出现报错信息,不能使用联合注入法,所以我们使用报错性注入。(这只是其中一个方法,看见别人有用布尔型盲注和延迟型注入的。)
依次对数据库名、字段名、列名、用户名、进行爆破。但是这个方法具有随机性,不太推荐使用。
concat_ws与concat基本一样,它多了个分隔符[为分隔符。
floor函数意思是向下取整数,rand生成随机数。union select cout(*),1,concat(注入语句,floor(rand()*2)) as a from information_schema.tables group by a–+ 此种方法原理是在information_schema.tables中查找名字为a的表,如果没有名为a的表则,生成a的虚拟表并插入数据,这时候执行聚合函数插入表a,由于未有a表返回报错信息,即执行了注入语句。
时间延迟型盲注时间较长且繁琐,建议使用脚本跑。
Less-6
第6关与第5关,较为相似。
首先输入 /?id=1 和 /?id=1’ 等判断闭合方式,只有/?=1" 出现报错信息,所以我们用 " 和 --+ 闭合方式,其他与Less-5相似。
Less -7
这道题我首先,输入 /?id=1 但是网页显示这在这里插入图片描述
说明我们要用到文件录入的方式将信息录入到文件中。但是后面的结果不对,我也有点不懂,暂时不会。
Less -8
这道题要用到布尔盲注。速度较慢,但是不需要数据库报错信息。
加单引号,页面返回不正常,通过-+注释后面的内容,返回正常。
1.判断当前数据库的长度 =8
2.判断当前数据库的有几张表。
3.判断表的长度。
4.判断表 ”users" 的列数。
5.判断表中对应的字段的数据长度。
(图片较多就不一一展示了,按照上面的相关步骤即可)
输入 /?id=1’ and mid(database(),1,1)>‘a’–+ (判断本地数据库首字母是否大于a。一直进行下去 直到 s 页面发生变化,所以首字母是s 。在这里插入图片描述
在这里插入图片描述
Less-9
本关用到了延迟注入[ ’ ]
if(a,b,c,)函数,判断a,如果a为真,则执行b,依次类推。
sleep(x) 延迟x秒。
在这里插入图片描述
Less-10
运用双引号的时间延迟型盲注,与Less-9相似。
前10关,主要就是运用GET整型注入,单双引号字符型,相关语句我在前面已经写过。总结下来就是,刚接触sql-lab,有很多的不足之处,要学习的还有很多。

你可能感兴趣的:(sql-lab 1-10关通关秘籍)