利用正则表达式绕过

首先准备靶场环境。

打开小皮软件,开启并配置apache环境和数据库,并把根目录修改一下。
在这里插入图片描述
打开靶场,登录名字Dumb
在这里插入图片描述

对靶场进行查询

首先使用order by来查看列
使用order by来查看列是因为在联合查询的时候,如果列不一致,是会报错的。
如果第一次输入的列表数多了是会报错的,所以往下一个一个减来试。
在这里插入图片描述
由order by可以知道这个表一共有3列,那么我们就可以查看2,3列;可以看的出来,第二列存储的是登录名字,第三列是密码。

在浏览器中输入:localhost/Less-1/?id=1 'union select 1,2,3–+
在这里插入图片描述

既然知道了用户和密码的列数,那我们也可以查找user;

在浏览器中输入:localhost/Less-1/?id=1 'union select 1,(select user()),3–+
在这里插入图片描述

但是如果说想要继续编写的话是不可以,因为在编辑网站中的正则表达式的时候设置的是select\b[\s\S]*\bfrom,以select开头,并且在查询的时候一定会跟一个from去引用表。
在这里插入图片描述

这里匹配的时候,以select开头,匹配到了select后,\b匹配的就是边界,\s\S两个在一起使用的话就可以相当于匹配所有字符,“*”匹配0次或者多次;这样的表达式就是在过滤注入,让你注入不了。

在配置文件中添加下面语句,然后在在浏览器中输入地址:localhost/Less-1/?id=1 'union select 1,(select group_cocat(username,0x3a,password)from users),3–+
在这里插入图片描述
改了之后访问的结果是:
在这里插入图片描述

开始进行绕过操作

由于上面出现的问题,我们想要绕过的话,就不让出现边界,也就是改变from的值(但是要保证是个单词,并且需要延长,还不能报错)
唯一好处就是mysql是支持科学计数法的,来设置,如果加上科学计数法来查询的话

select username,1e1from users;

由于1e1是科学计数法,mysql识别并且单独列出来一列,而且“1e1”可以和from连接在一起使用,系统会认为这是两个命令,所以这样既没有报错,同时也绕过了正则。但是也样并没有完全解决。
当我这样输入要绕过的时候,他提示了“Operand should contain 1 column(s)”你查询的列超范围了。
在这里插入图片描述
因为我们前面查的时候是三列,现在加了一个科学计数法为了绕过,但是这样也相应的多了一列。所以可以换一种方式来写,也就是换一种语法来将4列变成3列
** localhost/Less-1/?id=1 'union select 1,group_cocat(username,0x3a,password)from users)–+**
这样写的方式来减少咱们列的输出,这样的话第二列显示的就是用户名和密码,第三列就是加入的科学计数法。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值