1、环境搭建
开始讲解网络完全之前,我们需要搭建好环境。这里只介绍初期我们需要用到的,包括集成环境,常用工具,漏洞平台等等。
1.1、集成环境
作为开始,我们建议是用集成环境搭建,不建议单独安装软件。啥是集成环境呢?如果你用的是windows环境,比如wamp,phpstudy等等,如果是Linux环境,比如LA/NMP 等等。
- wamp:windows+apache+mysql+php
- phpstudy:集成包括php、apache、nginx、mysql、redis等等
- la/nmp:linux +apache/nginx+mysql+php
这些工具直接搜索下载安装即可。
1.2、常用工具
常用工具包括火狐渗透测试专版、BurpSuite、SQLMap,这些工具也可以在网上很方便找到。
- 火狐渗透测试专版:就是旧版火狐+各种插件,记得不要开启浏览器自动更新
- BurpSuite:一款集成化的渗透测试工具,用Java语言编写,需要提前安装好JDK。不同版本对应不同的JDK版本,目前最新版的BurpSuite2021需要>=JDK11版本。
- SQLMap:一个自动化的SQL注入工具,主要功能是扫描、发现并利用给定的URL的SQL注入漏洞,内置了很多绕过插件。
1.3、漏洞平台
本地搭建测试平台:
- sqli-labs:是一款学习SQL注入的开源平台,直接下载https://github.com/Audi-1/sqli-labs,详细下载和安装可以自行搜索。
- dvwa:一款开源的渗透测试漏洞练习平台,其中内含XSS、SQL注入、文件上传、文件包含、CSRF和暴力破解等等各个难度的测试环境,过程中我们会讲解源码。
在线闯关练习:
- 墨者学院:https://www.mozhe.cn/
- i春秋ctf:https://www.ichunqiu.com/battalion
- 攻防世界:https://adworld.xctf.org.cn/
2、SQL注入判断
-
SQL注入漏洞的产生需要满足以下两个条件:
- 参数可控:前端传给后端的参数内容用户可以控制。
- 参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。
-
判断语句:
select * from users where id = 1' 1
select * from users where id = 1 and 1=1 2
当执行第一个sql返回非正常页面,第二个sql返回正常页面时,可以初步判断存在SQL注入漏洞。
3、与MqSQL注入相关的知识点
MySQL5.0之后,默认在数据库中存放一个“information_schema"的数据库,在该库中有三个表名SCHEMATA、TABLES和COLUMNS。
SCHEMATA表存储用户创建的所有数据库的库名,字段名SCHEMA_NAME。TABLES存储用户创建的所有库名和表名,字段名分别为TABLE_SCHEMA、TABLE_NAME。COLUMNS存储用户创建的所有的数据库库名、表名和字段名,对应字段名为TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME。
3.1、常用查询语句
select 要查询的字段 from 表名 where 条件
select * from table_name order by 字段名或者字段对应的序号
select * from table_name limit index,size
select * from table_name union select * from table_name
解析:
- where后跟查询条件,多个条件可通过and或者or或者其他连接
- order by 原为排序子语句,但是当字段对应的序号不存在是报错,依次可以来判断字段个数
- union 为联合查询,前提是union前后2个查询结果集字段个数必须相同否则报错
3.2、常用函数
- database():获取当前数据库名
- user():获取当前用户
- version():获取当前数据库版本
- length(str):获取字符串str长度
- substring(str,index,len):从字符串str index位置截取长度len个字符
- concat(str1,str2,str3,…):字符串拼接
- group_concat(字段1,字段2,字段3,…):分组拼接字段
3.3、注释
- 单行注释:#
- 单行注释:-- (空格)
- 多行注释:/* */
- 内联注释:/*! code */