靶场下载
链接:
https://github.com/Audi-1/sqli-labs
sql注入
什么是sql注入
所谓SQL注入,就是通过把SQL命令插入到WEB表单提交或输入域名或页面请求的查询字符串,最终到达欺骗服务器执行恶意的SQL命令,从而进一步得到相应的数据信息。
sql注入分类
判断是字符型注入还是数字型注入
在链接后面用给的方法查看?id=1判断
但不能简单的看到数字则认为是数字型,毕竟字符型包含数字
当我们输入?id=2是我们发现内容有所改变
此时我们输入?id=1 and 1=2
发现没有报错,我们可以判断该页面为字符型
反之报错则认为该页面为数字型,因为and判断必须前后都为true否则返回false
我们现在尝试数字型页面会发生什么
我们可以看到页面并没有返回值,则该页面为数字型页面
第二种判断数字型页面的方法是用数学符号判断
此时我们输入?id=2-1我们得到的结果与?id=1结果相同,此时id=2-1的结果为1,则返回值为1,字符型无法进行数字运算。在判断过程中我们应尽量使用减号进行运算,URL 编码通常使用加号(+)或 %20 替代空格,解码的时候会把+解码成空格
判断闭合方式
常见符号有’ " ‘) ")
输入?id=1’"报错多一个‘则闭合符号为单引号( ’ )
输入?id=1’"报错为near 1’“)多一个‘)则闭合符号为’)
判断闭合方式会导致sql报错,此时我们可以用‘–+’或‘#’或‘%23’注释掉
#与–+两者均为sql中注释语句,不运行后方的代码
%23则是urlencode编码格式