sql注入空格被过滤_手工sql注入&&绕过waf &&一个实例分析

764be5b2a9c450744b9b744930c6f8b2.png

原创: K 合天智汇

这篇文章,将教大家基本的手工sql注入和绕过waf的知识;分享一个实例,为了效果建议读者自己去搭建环境,因为真实环境都不怎么理想。
1. sql注入的基础
2. sql注入绕过waf
3. sql注入一个绕过实例
手工sql注入的基础基础注入,盲注注入(时间和bool),报错注入,联合注入(union)
推荐sql-labs资源这个练习平台,推荐《mysql注入天书pdf》1.base(基础的语句注入)
我们利用该表可以进行一次完整的注入。以下为一般的流程。
1)猜数据库

be8d3730f74eedefd354ce4287797e22.png


2)猜某库的数据表

0f17e1dac69d360396be99a308c161b3.png


3)猜某表的所有列

ce8e6ef167c48f6af8042f136a5cc0b5.png


4)获取某列的内容

9e200d61bafda0c2c22a2148caeb5198.png

2.union注入
union注入和基础的注入相差不大,只需将前面的数据置0,即没有那个指定字段即可;当然先要确定字段,下面的文章有分析3. 时间注入
主要用到一些截断字符对数据库的字符进行判断
1)先试数据库的长度,当数字为6时发生了延时,说明数据库名共五个字符。

a26fcb40fa0b2a0af1d5f909373fd08c.png


2)开始猜数据库的字(当发生延时,说明当前数据库第一个字母为m):

cece4e1608c4187133f8b64a469e55c3.png

3)其他的数据只需修改查询语句即可4. bool注入是根据回显,对的查询是一种回显,错的查询又是一种回显
也是字符截断函数来操作的
if(length(database())>8,1,sleep)
其他的不多说了5. 报错注入
是通过报错函数来进行操作的https://www.cnblogs.com/wocalieshenmegui/p/5917967.html 十种报错注入
作者常尝试的是这三个报错函数updatexml,exp,floor

8629d1d53489370a828978edcc5d7858.png


sql注入绕过wafok,这是本篇的重点
作者就不填写那些网上普遍有的,给出几个记得到并且常用的,但是有些简单的还是要简单试下1. 大小写混写2. 编码试下 作者常用url编码;拿到数据库名和表名常用16进制替换他们的名字3. 替换
and &&
or ||
相同函数的替换(这个先要过前面的引号闭合,字符过滤;前面的如果过不了,一般作者都考虑不到这,真要用到时才换)4. 注释绕过
1)内联/*!50000*/,一般是被杀了的
2)/*!50000union/*!50000/*!(select*/~1,2,3) (过安全狗写法,亲测可用,下面实际操作我们将这样操作)
3)句末注释://, -- , /**/, #, --+,-- -, ;--a
作者常用 -- -,屡试不爽(一般+是被过滤了的)
实际运用
手工操作一波,我的测试过程:
单引号走起

8597f5e87e8077e6e8a94899a284a0d9.png


这种情况gpc一般是打开了
双引号,同样如此:

5072a4f88d9374ec7054deedaad5460d.png


ok,其实我们首先应该确定是字符型参数还是数字型
当id=2

83c5ea8a565a02cc186b02375990e94f.png


id=1+1

993e94d330b14aa8e0d3fa8dbb1366e3.png


这里+是被过滤了的,所以我们用-来做个运算

83e896881d6c4d6c8b8aeeba698e4aa8.png


一切正常
ok,说明是数字型的参数,那么就不用引号闭合,可以进行接下来的注入
(这里给大家补充一点小知识:cms审计时,这种id之类的都是inval函数处理的;其他的cms地方sql注入漏洞很有一些是因为数字型参数不需要引号闭合进行操作的)
如果是字符型的怎么办,字符型的gpc情况确实不好办,作者遇到的基本是编码绕过:这里的编码是gbk的编码,sprint函数这类的编码漏洞绕过;编码漏洞情况同样适合xss漏洞,都是绕过waf。
这里,作者是先进行常规注入,id=2 order by 2

be9b61eb3b10d05fd711ffc4f086db97.png


id=2 order by 1 正常

c37e34bd842e57b0d08d6f10dbae99ea.png


说明只能显示一列数据了
OK,我们进行union测试

8e53496aa811b77c2abbafc8bb7ddcff.png


发现了什么,union不见了
不急,我们有姿势
双写union(作者还真看到过只过滤一次关键词的代码)

3d711a7aa5b5a866890756115a057258.png


嗯,看来是过滤那个单词大小写(虽然过时了,现在匹配函数都直接大小通杀,不妨碍随手试下)

f21c749c910213d09dfb61c850f24de8.png


看到UNIon被ban了
OK,不要着急,我们试下其他的方法
用过狗方法,这里就这样过了(普通内联试过无法)

6856673e750a04484be5f60b19fecebb.png

d1f9a80f979cdc9fb4849c10ea11b0f1.png

26fa7bbf047df9af9aa4aa077b920314.png

412123f8289203974ab7487d6f205a41.png


但美中不足的是网站的数据库系统配置出了问题,出现下面这个错误
作者这样尝试

af75c0e0f20dc8fca04bd5866b2a5791.png


不指定库也是查找当前库;再尝试用limit0,1限制,效果也是如此

4a253ae7882679a43cb8636a046e52b5.png


Illegal mix of collations for operation 'UNION'
遇到了这个问题,是数据库的编码不一样
原因参考:https://www.cnblogs.com/google4y/p/3687901.html
ok,我们继续,作者直接or来取数据库

b942efe47b930561aeb07467c8e278dd.png


被ban了
|| 代替or
and呢(这比较有意思了,也是经常遇到了情况,waf特定情况才ban字符串,绕过本来就是经验和猜)

b6577e42f9fbdfdf566e2c380c045f91.png


我们看到,没有语法错误,是正确的,那我们取下数据库呢

ae7cbc667a9c774474af51493a4a7ee5.png


按照mysql的语法,作者原先以为没有错(其实是错的语法)

c7c73b71ce9b9788b36a861125bcb938.png


本地测试了下

5d53b30c4946d100433275c9cb699ce9.png


错误,再多语句,分号试了下,是对的

eceb480c8d74feae88091103b11fbe99.png


想当然的给网址来了下分号(sqlmap中根据数据库的不同也有多语句测试)

93a00c42eb5ec32f38bc086031dc25c2.png


当然是错误的
时间注入嘛,测试成功(突破口哦)

a7d7f8571ff109d1a93ac7ce339d9ba9.png


作者一开始这样测试

15e907a502ff45ac535ec07cbe4c8db6.png


嗯,忘记单引号被过滤
用mysql的其他函数来解决

99b0bc10ae48fc15fe112740a19d0539.png


附上测试代码(sql时间盲注的代码除了sql的语句不同,其他的类似;bool盲注,就是修改返回判断条件,if “aaa” in res.content:,bool就没有去测试了,有兴趣自己试一下吧)

ebad935826fbfd820bd5ec8f28334836.png


报错注入试下:

530bb6d5057452335854439968ba0435.png


这么多报错函数,就没有一一去测试
总结
本篇文章较基础,但对于作者来说,较全面了
手工注入知识就这些,更高级的就是各种姿势了
大体也是这个流程,这也是作者的所有干货了
文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值