安全作业4

正则表达式

匹配次数
  • *:匹配前一个字符任意次
  • .*:匹配前面任意字符任意次
  • ?:匹配前一个字符0次或1次
  • +:匹配前面的字符至少一次
  • {n}:匹配前一个字符n次
  • {m,n}匹配前一个字符至少m次,至多n次
  • {,n} 匹配前一个字符至多n次
  • {n,}匹配前一个字符至少n次
匹配字符
  • .:匹配任意单个字符
  • [] :匹配指定范围内的任意单个字符
  • [^] :取反
  • [:alnum:] 或 [0-9,a-z,A-Z]:匹配数字或字符
  • [:blank:]: 空白字符
  • [:digit:]: 十进制数字
  • [:xdigit:]:十六进制数字
  • [:print:]: 可打印字符
  • [:punct:] :标点符号
贪婪匹配和惰性匹配

贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。
惰性匹配,有时候需要匹配尽可能少的字符。
回溯:当前前面分支/重复匹配成功后,没有多余的文本可被正则后半部分匹配时,会产生回溯

例如:
对1234a做测试

贪婪匹配( /\d+\b/)

  1. \d+ 匹配得到 1234
  2. \b 匹配失败
  3. \d+尝试回吐一个字符,即匹配结果为 123 ,\b还是匹配失败!
  4. 那就继续回吐,一直到 1,还是匹配失败,那么这个正则就整体匹配失败了
  5. 这个回吐匹配结果的过程就是回溯

惰性匹配(/d+?\b/)

  1. \d+? 先匹配得到1 , \b 匹配失败
  2. \d+? 继续匹配,得到12 ,\b 匹配失败
  3. \d+? 一直匹配到1234,\b 一直匹配失败
  4. 整个正则匹配不成功
密码输入测试

要求数字、小写、大写字母以及符号,且位数在7-8位
在这里插入图片描述

利用正则表达式绕过

打开靶场用order by检测列,确保列相同,保证联合查询

在这里插入图片描述

在4时显示unknown,代表没有那么多列,于是可以往后减,从而得知这个表有3列,其中username为2,password为3
在这里插入图片描述

于是可以通过用户和密码查找到user,但是由于正则表达式的限制无法继续在这里插入图片描述
在这里插入图片描述
无法注入
在这里插入图片描述

只有不让正则表达式出现单词边界,改变from的值,才能绕过
mysql支持科学计数法,所以能使用1e1查询在这里插入图片描述
在这里插入图片描述
由于使用了1e1,mysql识别并且单独列出来一列,而且“1e1”可以和from连接在一起使用,系统会认为这是两个命令,所以这样既没有报错,同时也绕过了正则,但是也样并没有完全解决。
在这里插入图片描述
换一种方式来写,也就是换一种语法将4列换为3列。
添加:

localhost/Less-1/?id=1 'union select 1,group_cocat(username,0x3a,password)from users)–+

完成
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值