sqli-labs:Less 17
sqli-labs:Less 17判断注入类型我们先按照这个网页的功能走一遍,目测是更改密码的页面,输入用户名之后用新密码覆盖旧密码。
切换到 Less 11 验证一下,可以看到此时 admin 用户的密码已经被我们所修改。
接下来判断注入类型,使用单引号闭合构造恒真条件,网页回显密码修改失败。测试一下所有的注入,发现这些注入网页都回显改密失败。
a' OR 1 = 1#a') OR 1 = 1#a')) OR 1 = 1#a" OR 1 = 1#a") OR 1 = 1#a")) OR 1 = 1#
抓包得知网页需要利用 POST 方法提交的参数格式如下:
uname=&passwd=&submit=Submit
接下来对新密码字段进行闭合测试,使用单引号闭合以及以下几种注入,仍然全部失败。
uname=a&passwd=a'#&submit=Submituname=a&passwd=a')#&submit=Submituname=a&passw ...
sqli-labs:Less 13~16
sqli-labs:Less 13 ~ 16Less 13~16 都是基于 bool 盲注或时间盲注的关卡,和之前的关卡区别在于此时用 POST 方法传递参数。
Less13POST 单引号变形双注入
判断数据类型用户名随便写点东西后用单引号闭合,使用 OR 运算符构造恒真条件,使用 “#” 注释掉后面的内容注入。网页提示登录失败,并返回语法错误的提示信息。
admin' or 1 = 1#
添加一个括号,使用单引号闭合,此时网页提示我们登录成功。因此网页存在字符型注入漏洞,并且使用单引号和括号进行闭合。注意到此时网页并没有返回任何信息,我们需要使用 bool 盲注进行注入。
admin') or 1 = 1#
使用 Brup 抓包,网页是通过 POST 方法提交的参数如下。
uname=&passwd=&submit=Submit
获取数据库信息判断表有几列,使用 ORDER BY 子句进行排序看下对几列有效。对第二列对返回的结果排序,网页返回正常。对第 3 列对返回的结果排序,网页返回不知道第 3 列,说明一共有 2 列。
uname=a& ...
sqli-labs:Less 11 12
sqli-labs:Less 11 12Less 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 ...
sqli-labs:Less 9 10
sqli-labs:Less 9 10Less 9 和 Less 10 都是时间盲注,主要思想是利用 IF 语句,结合 sleep() 函数制造时间差来判断注入的正确性。
Less 9基于时间的 GET 单引号盲注
判断注入类型首先注入正确的参数,网页返回 “You are in…”,但是没有其他信息。
?id=1
接下来注入个查不到的参数,网页还是返回 “You are in…”。
?id=-1
以下4中注入,网页还是返回 “You are in…”,说明此时网页不会回显任何有价值的信息。
?id=1'?id=1'--+?id=1"?id=1"--+
转换思路,MySQL的 sleep() 函数能够起到休眠的作用。为了方便调试这里使用bp的重发器,注入如下参数响应时间没有异常。
?id=1 and sleep(2)--+
注入如下参数响应时间明显增加,并且主观上也能感受到延迟。这是明显的基于 时间盲注 的字符型SQL注入漏洞,我们需要使用 sleep() 函数制造时间差进行注入。
?id=1' and sleep(2)--+
...
sqli-labs:Less 7
sqli-labs:Less 7开启文件读写权限MySQL使用 secure-file-priv 参数对文件读写进行限制,当参数值为 null 时无法进行文件导出操作。使用这条命令可以查看
show variables like '%secure%';
通过修改 MySQL 下的 my.ini 配置文件就可以启用权限,需要把下面这个字符串写入文件中。
secure_file_priv="/"
再次查看此参数,若参数值不为 null 则修改成功。
判断注入类型注入个正常的参数,网页返回 “You are in…. Use outfile……”。
?id=1
注入单引号和单引号加个括号闭合,网页回显错误信息。
?id=1' --+?id=1') --+
注入单引号再加上 2 个括号闭合,网页回显 “You are in…. Use outfile……”,说明这是用一个单引号和 2 个括号闭合的字符型注入。
?id=1')) --+
写入文件我们需要先知道网页所在的文件路径,从 Less 7 是没办法得知的 ...