攻防世界 进阶 supersql 注入
https://blog.csdn.net/qq1124794084/article/details/77851094
首先上面是sqlmap 注入检测工具 的一些指令 的url网页地址
最常用的寻找SQL注入点的方法,是在网站中寻找如下形式的页面链接:http://www.xxx.com/xxx.asp?id=YY
其中“YY”可能是数字,也有可能是字符串,分别被称为整数类型数据或者字符型数据。在本章中我们主要针对整数型数据进行SQL注入讲解。
加引号”法
在浏览器地址栏中的页面链接地址后面增加一个单引号,如下所示:
http://www.xxx.com/xxx.asp?id=YY’
然后访问该链接地址,浏览器可能会返回类似于下面的错误提示信息:
Microsoft JET Database Engine 错误’80040e14’
字符串的语法错误在查询表达式’ID=YY’中。
/xxx.asp 行8
说明该网站可能存在SQL注入攻击的漏洞。
1=1和1=2”法
“加引号”法很直接,也很简单,但是对SQL注入有一定了解的程序员在编写程序时,都会将单引号过滤掉。如果再使用单引号测试,就无法检测到注入点了。这时,就可以使用经典的“1=1和1=2”法进行检测。
如果正常页面链接地址为:http://www.xxx.com/xxx.asp?id=YY,在浏览器中分别输入以下两个链接地址,分别查看它们返回的结果值。
Ø http://www.xxx.com/xxx.asp?id=YY and 1=1。
Ø http://www.xxx.com/xxx.asp?id=YY and 1=2。
如果存在注入点的话,浏览器将会分别显示为:
Ø 正常显示,内容与正常页面显示的结果基本相同。
Ø 提示BOF或EOF(程序没做任何判断时),或提示找不到记录,或显示内容为空(程序加了on error resume next),如图1.4所示。
如果没有注入点的存在,也很容易判断。
sqlmap使用
先打开sqlmap
1.对url进行检测,判断是否存在SQL注入
python sqlmap.py -u "url" --batch 这里的sqlmap.py是一个用python编写的可执行脚本或者说文本。(-u参数指定目标注入地址)
Python sqlmap.py -u "http://10.10.10.1/sqli-labs-master/Less-1/?id=1" --current-db ( 列出当前数据库 )
这里的是堆叠注入
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。