本篇是自己的一个sql-labs (1-10关) 笔记, 欢迎大家指正
1-10关主要关于基础的Get注入的知识点
基础SQL语法
下面这三个语句是获取数据的基础
后面只要找到注入点后, 用这三条语句即可
select group_concat(table_name) from information_schema.tables where table_schema=database()
select group_concat(column_name) from information_schema.columns where table_name='users'
select group_concat(username,':',password) from users
第一关
第一关是字符型注入
第二关
第二关是数字型注入
第三关
区别就在于这关由单引号括号闭合
第四关
双引号括号闭合
第五关
一开始我们试着用 id=1 and 1=1 没问题
接着用 id=1 and 1=2 发现也没问题(如下)
要知道, and 前面出错, 后面的就不会运行
说明前面传入数字正确, 那这就是字符型注入
改为字符型注入, 果然没有显示了
但此题还有一点, 你输入正确都是 You are in.......
所以我们考虑使用报错盲注
第六关
此题改为双引号闭合
第七关
此题为 ')) 闭合
第八关
此题一样, 发现 id=1 and 1=2 还有数据, 就说明是字符型注入
但是发现采用报错盲注居然没有回显, 那么我们考虑使用布尔盲注
由于我们不知道id是多少, 又为了保证后面的语句能输出, 所以使用or
我们猜长度为7, 错误, 继续猜
可以看到, 长度为 8 时有回显, 所以数据库的长度为8
接着一步步猜解库名, 表名, 列名
这里猜到库名第一个字母是 's'
接着就是无尽的往下猜 (python yyds)
第九关
第九关直接看源码:
发现无论你输入正确与否都是返回一样的 You are in......
所以我们采用时间盲注的方法
按上面方式一步步猜表名, 库名, 列名
第十关
与第九关唯一不同就在于是双引号闭合
谢谢你能看到这, 一起加油ヽ( ̄ω ̄( ̄ω ̄〃)ゝ