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.字符型:
2.数字型:
3.字符型:
4.字符型:
合并:$sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";
总的来说他们主要切入点是 引号的闭合问题,而且他们都是对回显的情况下进行注入,属于最基本,也是最简单的SQL注入。