本文首发于“合天智汇”公众号 作者:SRainbow
关于动态代码防御机制,是自己瞎取的名字,目前我还没有看到过类似的文章。如果有前辈已经发表过,纯属巧合!!!我仅是突发奇想的一个想法,说不上高大上。也就是想说出这个想法。说不定各位在座的大佬有更好的想法去完善这个方案!
动态代码防御机制介绍
现在的各种攻击都是针对静态代码的攻击,例如接受用户名和密码的处理语句:select * from users where id=’id’ and pwd=’pwd’。攻击者总可以想到一种方式进行攻击或者绕过,因为后端代码是写死了的,他只能按照这种方式处理,所有难以有所避免的(当然web防火墙和代码过滤也能解决,但是这里我想说的就是动态防御机制这个核心思想)。随着时代的发展也诞生出一批相当优秀的工具,例如作为sql注入的神器sqlmap,便能轻轻松松对安全防护比较弱的网站发起攻击。甚至还能直接上传文件、获取shell等操作。
由于后端代码是静止的,因此攻击者可以通过不断尝试获取数据库的的信息。如下图:
这种工具的诞生也给攻击者带来了便捷,能够很方便的对一个网站发起攻击,大多数情况下,会使用sqlmap先走一波看看啥情况,然后再人工分析。这时候想,如果后端代码是动态随机的,那么会有什么情况?这样后端代码就活动起来了,给攻击者无论是使用工具或者人工分析都带来困难了。要想注入成功,那就需要各位仁兄运气了!
如果后端代码是动态运行的,那么就会导致攻击者无法锁定后端代码从而实施注入。如下图:
SQL注入的动态防御实践
这里使用的是phpstudy搭建的一个sqli-labs环境进行操作。搭建好的效果如下:
下面就用sqli-labs第一关作为实验对象。我们看下后端代码的sql代码:
很明显,我们只需要闭合这个单引号就能实现注入了,这会儿直接采用sqlmap进行注入,结果如下:
可以看到payload是用单引号闭合注入。然后修改下sql代码,使用sqlmap进行注入的情况如下:
使用sqlmap注入,得到的payload如下
其实就是把单引号注入转变成了双引号注入。接下载就是动态代码防御机制了,我在这个代码中加入了随机数,通过随机的设置sql查询不断变换,导致sqlmap不能实现注入。添加的代码如下:
然后再使用sqlmap进行注入,效果如下:
Sqlmap工具突然就会失效了。在以前版本的sqlmap中比较容易实现,现在使用新版本sqlmap比较稍微困难了点。
总结
通过上面的这种后端代码动态变化方式,能够给防御带来一定程度上的帮助。而且我感觉这个思想应该能用在更多的场景中,还需要大家一起探索探索。
实验推荐
SQL注入基础防御对策一
声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关!
 

防御sqlmap攻击之动态代码防御机制的更多相关文章

  1. Jsoup代码解读之六-防御XSS攻击

    Jsoup代码解读之八-防御XSS攻击 防御XSS攻击的一般原理 cleaner是Jsoup的重要功能之一,我们常用它来进行富文本输入中的XSS防御. 我们知道,XSS攻击的一般方式是,通过在页面输入 ...

  2. 防御XSS攻击的七条原则

    本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...

  3. 认识与防御XSS攻击

    什么是xss攻击? XSS,即(Cross Site Scripting)中文名称为“跨站脚本攻击”.XSS的重点不在于跨站攻击而在于脚本攻击.攻击者可以利用 web应用的漏洞或缺陷之处,向页面注入恶 ...

  4. WEB安全 - 认识与防御XSS攻击

    目录 什么是xss攻击? XSS的危害 XSS攻击分类 xss攻击示例 反射型攻击 - 前端URL参数解析 反射型攻击 - 后端URL参数解析 注入型攻击 - 留言评论 如何规避xss攻击? 总结 什 ...

  5. 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式

    使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...

  6. 描述ARP协议的工作原理,怎么实施ARP攻击和防御ARP攻击

    什么是ARP协议?ARP,即地址解析协议,实现通过IP地址得知其物理地址.在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文在 ...

  7. NGINX防御CC攻击教程

    CC攻击即http flood,以攻击成本低(只需数台http代理服务器即可实现攻击).隐蔽性强(中小CC攻击一般不会造成网络瓶颈).难防御(与正常访问的请求很难区分开).威力强大(造成和DDOS流量 ...

  8. Asp.net防御XSS攻击组件库

    一.AntiXss 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下. 目前类库已融入到.netframework中,类库主页不再更新. 使用方法:使用Nuget ...

  9. 使用Typescript重构axios(二十四)——防御XSRF攻击

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

随机推荐

  1. 想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  2. three.js 制作属于自己的动态二维码

    今天郭先生说一下用canvas解析图片流,然后制作一个动态二维码的小案例,话不多说先上图,在线案例点击博客原文.这是郭先生的微信二维码哦! 1. 解析图片流 canvas = document.cre ...

  3. 【日常摘要】- RabbitMq实现延时队列

    简介 什么是延时队列? 一种带有延迟功能的消息队列 过程: 使用场景 比如存在某个业务场景 发起一个订单,但是处于未支付的状态?如何及时的关闭订单并退还库存? 如何定期检查处于退款订单是否已经成功退款 ...

  4. Cordova iPhone 刘海屏 和 安卓瀑布屏 等异形屏幕的适配处理

    1.  在cordova项目的config.xml中指定StatusBarOverlaysWebView(需要cordova-plugin-statusbar插件支持),表示应用界面是否覆盖状态栏(系 ...

  5. 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比

    摘要:这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别. 本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.c ...

  6. Horse Pro(带负坐标的bfs搜索)

    Horse Pro bfs搜索,但图中存在负值坐标,两种方法解决. 用数组标记,将原点设为300,300 用map标记 http://oj.jxust.edu.cn/contest/Problem?i ...

  7. 面试题六十:n个骰子的点数

    把n个骰子扔在地上,求出现和为s的概率 可得n<=s<=6n 方法:定义6n-n+1长度的数组,然后对所有可能出现的组合进行计算,把结果进行计数存进数组:递归 方法二:动态规划,大问题小化 ...

  8. BUUCTF-Web Comment

    dirsearch扫出/.git/目录 遂用航神写的Githacker脚本   https://github.com/wangyihang/githacker 出来的源码并不完整,使用git log ...

  9. 构建私有的verdaccio npm服务

    用了很长一段时间的cnpmjs做库私有库,发现两个问题 1. 最开始是mysql对表情emoij的支持不好,但由于数据库没办法调整所以只好把第三方库都清掉,只留私有库 2. mac 上面cnpm in ...

  10. 油田问题 bfs

    #include<iostream> #include<stdio.h> #include<stdlib.h> #include<time.h> #in ...