MySQL injection
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-L_2uGJGU7AVNRcqRvEi%252Fuploads%252FelPCTwoecVdnsfjxCZtN%252Fimage.png%3Falt%3Dmedia%26token%3D9ee4ff3e-92dc-471c-abfe-1c25e446a6ed&width=768&dpr=4&quality=100&sign=9c8fe74f&sv=1)
RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
Comentários
Funções Interessantes
Confirmar Mysql:
Funções úteis
Todas as injeções
from https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/
Fluxo
Lembre-se de que nas versões "modernas" do MySQL você pode substituir "information_schema.tables" por "mysql.innodb_table_stats" (Isso pode ser útil para contornar WAFs).
Apenas 1 valor
group_concat()
Limit X,1
Cego um por um
substr(version(),X,1)='r'
ousubstring(version(),X,1)=0x70
ouascii(substr(version(),X,1))=112
mid(version(),X,1)='5'
Cego adicionando
LPAD(version(),1...comprimento(version()),'1')='asd'...
RPAD(version(),1...comprimento(version()),'1')='asd'...
SELECT RIGHT(version(),1...comprimento(version()))='asd'...
SELECT LEFT(version(),1...comprimento(version()))='asd'...
SELECT INSTR('foobarbar', 'fo...')=1
Detectar número de colunas
Usando um simples ORDER
MySQL Union Based
SSRF
Aprenda aqui diferentes opções para abusar de uma injeção Mysql para obter um SSRF.
Truques de bypass de WAF
Alternativas ao information_schema
Lembre-se de que nas versões "modernas" do MySQL você pode substituir information_schema.tables por mysql.innodb_table_stats ou por sys.x$schema_flattened_keys ou por sys.schema_table_statistics
Injeção MySQL sem VÍRGULAS
Selecione 2 colunas sem usar nenhuma vírgula (https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma):
Recuperando valores sem o nome da coluna
Se em algum momento você souber o nome da tabela, mas não souber o nome das colunas dentro da tabela, você pode tentar descobrir quantas colunas existem executando algo como:
Supondo que haja 2 colunas (sendo a primeira o ID) e a outra o flag, você pode tentar forçar o conteúdo do flag tentando caractere por caractere:
Mais informações em https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952
História do MySQL
Você pode ver outras execuções dentro do MySQL lendo a tabela: sys.x$statement_analysis
Versão alternativas
Outros guias de injeção MYSQL
Referências
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-L_2uGJGU7AVNRcqRvEi%252Fuploads%252FelPCTwoecVdnsfjxCZtN%252Fimage.png%3Falt%3Dmedia%26token%3D9ee4ff3e-92dc-471c-abfe-1c25e446a6ed&width=768&dpr=4&quality=100&sign=9c8fe74f&sv=1)
RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
Last updated