一、SQL注入防御方法

1、过滤关键字符

对一些sql语句中可能出现的关键词进行过滤

2、编码/转义特殊符号

对用户输入的编码进行编码或转义,使其无法产生原有效果

3、语义分析拦截 (比如Python中的libinjection)

对用户输入进行判断,保证不存在于任意可执行的sql语句的片段中

https://github.com/client9/libinjection

二、靶机简单的防御绕过以及burpsuite工具使用

1、medium 级别

2、burpsuite工具使用

三、其他常见的简单防御绕过

1、大小写绕过

如果waf的正则对大小写不敏感,则可以考虑大小写绕过,比如waf过滤了关键字select、union,可以尝试使用Select、Union等绕过

2、双写关键字绕过

如果waf将关键字select等只使用replace()函数置换为空,这时候可以使用双写关键字绕过。例如select变成seleselectct,在经过waf的处理之后又变成select,达到绕过的要求。

3、十六进制绕过

会使用到引号的地方一般是在最后的where子句中。如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句:

select column_name from information_schema.tables where table_name="users"

这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。

users的十六进制的字符串是7573657273。那么最后的sql语句就变为了:

select column_name  from information_schema.tables where table_name=0x7573657273

4、空格绕过

①两个空格、tab、回车(url编码中的%0a)r码中的%0a)回车(url编码中的%0a)回车(url编码中的%0a)回车(url编码中的%0a)

②/**/     select/**/*/**/from/**/;

③()        select(id)from(users);

④`(tap键上面的按钮)    select`id`from`users`where`id`=1;

5、or and xor not 绕过

①and = &&

②or = ||

③xor = | # 异或

④not = !

6、等号=绕过

不加通配符的like执行的效果和=一致,所以可以用来绕过(某些情况也可以使用><绕过)

7、宽字节绕过

如果过滤 ' 的时候往往利用的思路是将 ' 转换为 \' 。
在 mysql 中使用 GBK 编码的时候,会认为两个字符为一个汉字,所以思路是:%df 吃掉 \ 具体的方法是 urlencode(\') = %5c%27,我们在 %5c%27 前面添加 %df ,形成 %df%5c%27 ,而 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,%df%5c 就是一个汉字,%27 作为一个单独的(')符号在外面:

id=6%df%5c%27union select 1,user() #

SQL注入:SQL注入防御相关推荐

  1. SQL注入原理与防御姿势(问答方式 描述)

    SQL注入原理? 通过把SQL命令插入到Web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 SQL注入危害? 数据库层面 非法读取.篡改.添加.删除数据库中数据 ...

  2. SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)

    CONTENTS 1 项目实验环境 2 SQL注入概述 2.1 SQL注入简介 2.2 SQL注入的危害 3 SQL基础回顾 3.1 联合查询union 3.2 information_schema数 ...

  3. sql注释符注入防御_WAF的SQL注入绕过手段和防御技术

    一.关于SQL注入 SQL注入是一种常见的入侵WEB应用的手法.SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的. 攻击者向Web应用发送精心构造的输入数 ...

  4. 渗透测试笔记(三)——SQL注入攻击及防御(1)

    SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...

  5. SQL注入-SQL注入的WAF绕过(十六)

    实验目的 普及熟悉利用重写等方式绕过WAF关键字过滤.以实现SQL注入的方法.PS:面试时不要说打WAF靶场什么东西,就说重复大小写编码什么之类的 基本概念 WAF(WebApplicationFir ...

  6. sql注入pythonpoco_SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 ...

  7. 注入——sql注入命令

    SQL注入漏洞防御 SQL注入-结构化查询语言,是一种特殊的编程语言,用于数据库的标准数据库查询. SQL 注入(SQL Injection)是一种常见的Web 安全漏洞.攻击者利用这个漏洞,可以增删 ...

  8. SQL万能钥匙注入的终结版

    我们登录一个网站的时候会有账户名和密码都要输入进去.这样的方法禁止非法进入网站,它是这样构造SQL语句的,假设填写用户名为marcofly密码为test.因为根据我们提交的用户名和密码被合成到SQL查 ...

  9. concat mysql sql注入_sql注入-mysql注入基础及常用注入语句

    最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...

  10. mysql %3c%3e sql优化_SQL注入技术和跨站脚本攻击的检测(2)

    2.3 典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix 解释: \w* - 零个或多个字符或者下划线 ...

最新文章

  1. 九零后的五年七次工作经历
  2. shop++商品搜索出现乱码的解决方法
  3. Android多线程死锁定位,Java---多线程之死锁
  4. HiKey960 开发板 android 编译
  5. DAVY的神龙帕夫——读者的心灵故事|十二橄榄枝的传说
  6. 改变图标颜色_LOL设计师宣布修改装备图标:提高清晰度、颜色差异化
  7. OpenCV鼠标事件和滑动条事件
  8. php机器人聊天对话框,仿机器人聊天窗口(热身)
  9. Opengl 好的文章和博客地址
  10. 华硕笔记本计算机名称,华硕笔记本电脑有哪些型号 华硕笔记本电脑型号大全...
  11. http://hi.baidu.com/%BE%C5%CC%EC%C4%A7%CA%DE/blog/item/9b3263626a75ff49ebf8f808.html
  12. iTunes12.7 如何自定义手机铃声
  13. 半年学习tse的总结
  14. 登录服和游戏服分开的原因
  15. Android音频处理知识(一)MediaRecorder录制音频
  16. 2018年高德地图POI全国数据下载
  17. Unity—Json1
  18. 修理机器人基维斯_《魔兽世界》魔兽世界机器人攻略
  19. 3ds max 结合透视匹配重构高变形的场景
  20. 从包工头到程序猿(三)味道

热门文章

  1. matlab gui界面设计 打开文件,matlab GUI界面设计 点击按钮加载.mat数据的所有变量到工作空间中...
  2. tpac100控制器设置教程_TP-link AC100控制器配置的详细方法
  3. 大华电子秤 手动变价方法
  4. 公路护栏设计技术简析
  5. python使用opencv进行身份证信息识别_基于opencv和tesseract实现身份证扫描件的身份证号码提取试验...
  6. ROS 5.24软路由系统 安装+部署+联网 参考教程(ISO版)
  7. 【ResNet】Pytorch从零构建ResNet18
  8. 获取注册表键值并格式转换
  9. ArcScan矢量化
  10. 使用Python实战反欺诈模型