Em relação aos espaços, existem muitos métodos alternativos, como espaços de guias e / ** / nos bancos de dados SQL, mas encontrei outro método alternativo, publicado na edição de 2006.7 do "Hacker Manual". Aqui escolhemos a essência e vamos dar uma olhada!
Para declarações SQL, todos ainda estão acostumados em seus espaços, como o SelectIdFrom [nome]. Se não houver espaço no meio, ele se tornará seletivo de [nome] e está confuso! Além dos métodos alternativos de alguns espaços mencionados acima, descobri que o uso de colchetes () também pode ser executado no SQL. Por exemplo, a instrução acima pode ser gravada como selecionada (id) de [nome], separada por colchetes e pode ser executada normalmente.
Por exemplo, obtemos um ponto de injeção: jmdcw.asp? Nome = aa'and1 = 1 e '' = ', se você substituir a declaração de que 1 = 1 é a senha do administrador da consulta: (selectAC (MID (PASS, 1,1)) de [nome] whereid = 1)> 49. Como usar espaços? Na verdade, pode ser escrito assim:
jmdcw.asp? nome = aa'and ((selecione (asc (mid (passa, 1,1))) de [nome] onde (id = 1))> 49) e '' = '
Se os símbolos <e> estiverem bloqueados, use entre… e… e a afirmação é:
jmdcw.asp? nome = aa'and ((selecione (asc (mid (passa, 1,1))) de [nome] onde (id = 1)) entre (40) e (50)) e '' = '
Para lugares onde os espaços devem aparecer no meio, use () para substituí -los, mas não é fácil de usar para instruções SQL muito complexas. O mencionado acima é o tipo de caractere. Se for um tipo numérico, você pode adicionar um suporte após id = 1. No entanto, não testei isso, por exemplo: jmdcw.asp? Id = (1) e (selecione ......). Deve ser viável, certo?
Haha, vamos resumir e compartilhá -lo com amigos em Loveshell.