知识点:SQL注入-堆叠注入,sql预处理语句,巧用contact()函数绕过
堆叠注入原理:
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在分号(;)结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。
用户输入:1; DELETE FROM products
服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products
当执行查询后,第一条显示查询信息,第二条则将整个表进行删除
方法一:重命名+堆叠注入
打开题目,显示如下界面,观察后猜测是sql注入
image
0x01:判断是否存在注入,注入是字符型还是数字型
输入1'发现不回显
输入1' #显示正常
应该是存在sql注入了
输入1' or '1'='1,正常回显,应该是字符型
image
0x02:猜解SQL查询语句中的字段数
输入1' order by 1 # 成功回显
image
输入1' order by 2 # 成功回显
image
输入1' order by 3 # 回显错误
[图片上传失败...(image-2ea278-1567002658869)]