注入起源:
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句里,将外部可控参数拼接到sql语句中,在管理员不知情的情况下实现非法执行的操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
基本步骤:
1.判断是否有注入点(判断是否严格校验)——第一个要素
1)可控参数的改变能否影响页面显示结果
2)输入的sql语句是否能报错--能通过数据库的报错看到一些数据库的语句痕迹
3)输入的sql语句能否不报错——我们的语句可以成功闭合
2.判断是什么类型的注入
3.语句是否能够被恶意修改(如添加单引号,双引号等)——第二个要素
4.是否能够成功执行——第三个要素5.获取我们想要的数据 数据库->表->字段->值
注入方式:
1、 普通注入
指未做任何处理的,直接通过注入union 查询就可以注入的漏洞。在普通注入测试时,通过查找关键字定向挖掘,数据库操作:select from 、mysql_connect 、mysql_query 、mysql_fetch_row 等,数据库查询方式:update、insert、delete等。
1)多语句执行
示例sql:
statement = "SELECT * FROM users WHERE name ='" + userName + "';"
例如:我们在web中,对name这个变量提交SQL查询:
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
在完整SQL代码中就是这个样子的:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';
这段SQL语句执行的结果是:users表被删除了,userinfo表的内容被完全展示出来!
2)数据类型未验证
示例:
statement := "SELECT * FROM userinfo WHERE id =" + a_var + ";"
这个a_var按正常逻辑来说是int型数据 <虽然用户提交的数据都被server识别为字符 or 字符串>。但是,如果Hacker提交如下payload:
1;DROP TABLE users
则sql语句执行如下:
SELECT * FROM userinfo WHERE id=1;DROP TABLE users;
SQL执行的结果是:users表被删除了!
2、 编码注入
程序在进行一些操作之前,经常会进行一些编码处理,而做编码的函数也是存在问题的,通过输入转码函数不兼容的特殊字符,可以导致输出的字符变成有害的数据。常见的编码注入有mysql 宽字节以及urldecode/rawurldecode 函数导致的。
1)宽字节注入
在进行php 连接mysql 时,当设置”ser character_set_client=gbk” 时会导致一个编码转换的注入问题,也就是熟悉的宽字节注入,当存在宽字节注入时,%df%27 可把程序中过滤的\ (%5c)吃掉。
例如:/1.php?id=1存在宽字节注入时,则: /1.php?id=-1’ and 1=1%23 单引号会被转义成 \’但是提交:/1.php?id=-1%df’ and 1=1%23 时,%df和\ 反斜杠(%5c) 组合 %df%5c 编码后是一个汉字,这时候单引号依然存在,则会闭合成功,形成注入漏洞。
特殊字符 |
URL中用途 |
转义方式 |
+ |
表示空格 |
%2B |
(空格) |
应换用加号 + 或%20 表示 |
%20 |
/ |
分隔目录和子目录 |
%2F |
? |
分隔实际的 URL 和参数 |
%3F |
% |
指定特殊字符 |
%25 |
# |
表示书签 |
%23 |
& |
URL中指定的参数间的分隔符 |
%26 |
= |
URL中指定参数的值 |
%3D |
! |
URL中指定参数的值 |
%21 |
2)二次urldecode 注入
现在通常Web应用程序大多都会进行参数过滤,来防止注入。如果某处使用了urldecode或者 rawurldecode 函数,则会导致二次解码生成单引号引发注入,即二次注入。
3. sql注入加单引号的目的:
加单引号是为了让后台SQL语句执行的时候报错,这样,我们就可以初步判断单引号被放在SQL语句中执行了,只是执行的语句因为有单引号而出错了。这样来初步判断可注入。
http://xxx.xxx.xxx/1.php?id=1%27%20or%201=1
参考链接:
https://www.cnblogs.com/milantgh/p/4394467.html
https://blog.csdn.net/pluto_23/article/details/118992270https://www.likecs.com/show-203380052.html