Less-3 ==>字符型注入
获取-基于错误-带括号的单引号-字符串
欢迎 Dhakkan
请输入ID作为带有数字值的参数
分别尝试将 ?id=1 ?id=1' ?id=1" 添加到url中,发现?id=1'报错,说明是字符型注入(初步认定为单引号注入而返回的结果中包含有一个小括号所以可推定出==>带单个括号的单引号注入)。
翻译:您的SQL语法有误。 检查与您的MySQL服务器版本相对应的手册,以在第1行的 "1")LIMIT 0,1'附近使用正确的语法
这里它意味着使用的查询是:
Select login_name, select password from table where id= ('1')
对比源码:
所以我们再用这样的代码来进行测试看是否是注入点:
?id=1′) -- #
结果返回正确,这样我们测试成功。
接下来就是要猜字段数,爆数据库,爆表名,爆字段,爆数据。方法和Less-2大同小异,
只需将所有的?id=1 ?id=-1改成?id=1') ?id=-1')来进行实验。
在这里特别说下爆数据库的两种方法:
1.爆所有数据库:
2.爆当前表所属的数据库
Less-4 ==>字符型注入
获取-基于错误 -双引号 - 字符串
欢迎 Dhakkan
请输入ID作为带有数字值的参数
分别尝试将 ?id=1 ?id=1' ?id=1" 添加到url中,发现?id=1" 报错,说明是字符型注入(初步认定为双引号注入而返回的结果中包含有一个小括号可推断出==>带单个括号的双引号注入)。
翻译:您的SQL语法有误。 检查与您的MySQL服务器版本相对应的手册,以在第1行的 ' " 1" ")LIMIT 0,1'附近使用正确的语法
这里它意味着,代码当中对 id 参数进行了 "" 和 () 的包装。
对比源码:
这两条语句合并在一起就是:$sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";
所以我们再用这样的代码来进行注入:
?id=1") -- #
这样我们注入成功。
接下来就是要猜字段数,爆数据库,爆表名,爆字段,爆数据。方法和Less-2大同小异,
只需将所有的?id=1 ?id=-1改成?id=1") ?id=-1")来进行实验。
总结(Less-1 —— Less-4):
这四道题属于基于错误的 SQL 注入。通过源码我们可以看出他们的规律:
1.字符型:![](https://i-blog.csdnimg.cn/blog_migrate/11a64e04b8c276e33f425dd51efd16b0.png)
2.数字型:![](https://i-blog.csdnimg.cn/blog_migrate/cca15e79f0fa9f840664411a3eac6929.png)
3.字符型:![](https://i-blog.csdnimg.cn/blog_migrate/8a564d761ef4b73c283c4965251c4663.png)
4.字符型:![](https://i-blog.csdnimg.cn/blog_migrate/be708278a29ee4bf8d1400c12d97fc7f.png)
合并:$sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";
总的来说他们主要切入点是 引号的闭合问题,而且他们都是对回显的情况下进行注入,属于最基本,也是最简单的SQL注入。