SQL注入流程
1.寻找注入点
得到目标网站的一般信息和技术分析信息之后,就要寻找注入点和测试注入点,这些点位都是与数据库有交互的地方
常用注入点在哪里?
我们一般在三个地方,寻找注入点
- 表单中的输入参数
- URL中的参数
- Cookie或header头中其它参数
用户信息、排名公布、文章展示、评论、搜索框、登陆框、cookie(session持久化需要存储在数据库中)
2.测试注入点&&判断闭合符号
常用的测试符号:
- 单引号 '
- 双引号 "
- 无符号(直接拼接)
- 圆括号 ()
这些符号通常是服务器后台代码中用来包裹用户输入变量的字符,当插入正确的闭合字符时,会破坏原有的sql语句;
根据报错信息判断闭合符号
输入常用闭合符号使页面抛出sql语法错误的报错信息,根据报错信息可以发现闭合符号
3.注入sql语句
找到注入点以后,我们就可以执行相应的sql语句,来获取数据库中的信息
- 首先使用order by 语句判断列数,其一般使用二分法查找列数
要注意的是联合查询前后两条 select 语句查询数据的列数是相等的,故需要使用 order by 语句来判断注入点sql语句查询的列数是多少order by 排序超过查询结果列数的时候就会抛出错误,故可以使用它来判断前一条 select 语句查询结果的列数。 - 然后进行暴库、爆表、爆字段、爆数据
暴库是查找所有数据库名的意思,mysql的注入可以从 information_schema 数据库中查询所有表的结构(库名、表名、字段名)信息。