`** gibi bir şey enjekte etmek, HTML kodlu `"`'nin **çalışma zamanında çözümleneceğini** ve **öznitelik değerinden kaçacağını** ve **`onerror`** olayını **oluşturacağını** yapar.
Başka bir teknik, bir **`form`** öğesi kullanır. Belirli bir istemci tarafı kitaplığı, yeni oluşturulan bir form öğesinin özniteliklerini temizlemek için bunları kontrol eder. Ancak, formun içine `id=attributes` olan bir `input` ekleyerek, öznitelikler özelliğini etkili bir şekilde üzerine yazarsınız ve temizleyicinin gerçek özniteliklere erişmesini engellersiniz.
Bu tür bir üzerine yazma örneğini [**bu CTF yazısında bulabilirsiniz**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
## Belge nesnesi üzerine yazma
Belge Nesnesi'nin özniteliklerini DOM Clobbering kullanarak üzerine yazmak mümkündür:
> [Belge](https://html.spec.whatwg.org/multipage/dom.html#document) arayüzü [isimli özellikleri destekler](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Herhangi bir anda bir [Belge](https://html.spec.whatwg.org/multipage/dom.html#document) nesnesinin desteklenen özellik adları, aşağıdakileri içerir: [ağaç sırasına](https://dom.spec.whatwg.org/#concept-tree-order) göre, katkıda bulunan öğeye göre, daha sonraki yinelenmeleri yok sayarak ve aynı öğe hem ad hem de ad özniteliği katkıda bulunduğunda, ad özniteliği değerleri ad özniteliklerinden önce gelir:
>
> \- İsimsiz olmayan ad içeriği olan tüm [açığa çıkarılmış](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) ve [açığa çıkarılmış](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) öğeleri için ad içeriği değeri ve belgeyi [kök](https://dom.spec.whatwg.org/#concept-tree-root) olarak kullanan bir belge ağaç yapısında bulunan öğeler;\
> \
> \- İsimsiz olmayan [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) içeriği olan tüm [açığa çıkarılmış](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) öğeleri ve belgeyi [kök](https://dom.spec.whatwg.org/#concept-tree-root) olarak kullanan bir belge ağaç yapısında bulunan öğeler;\
> \
> \- İsimsiz olmayan [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) ve isim içeriği olan tüm [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) öğeleri ve belgeyi [kök](https://dom.spec.whatwg.org/#concept-tree-root) olarak kullanan bir belge ağaç yapısında bulunan öğeler.
Bu teknik kullanılarak yaygın olarak kullanılan **değerlerin üzerine yazabilirsiniz, örneğin `document.cookie`, `document.body`, `document.children`** ve hatta `document.querySelector` gibi Belge arayüzündeki yöntemler.
```javascript
document.write(" ")
document.cookie
typeof(document.cookie)
'object'
//Something more sanitize friendly than a img tag
document.write("")
document.cookie
HTMLCollection(2) [img, form, cookie: img]
typeof(document.cookie)
'object
```
## Element ezildikten sonra yazma
**`document.getElementById()`** ve **`document.querySelector()`** çağrılarının sonuçları, aynı id özniteliğine sahip bir `` veya `` etiketi enjekte edilerek değiştirilebilir. İşte nasıl yapılacağı:
```html
test
clobbered
```
Ayrıca, bu enjekte edilmiş HTML/body etiketlerini gizlemek için stiller kullanarak, `innerText` içindeki diğer metinlerin müdahalesi engellenebilir ve böylece saldırının etkinliği artırılabilir:
```html
test
existing text
clobbered
```
SVG araştırmaları, `` etiketinin de etkili bir şekilde kullanılabileceğini ortaya çıkardı:
```html
example.com
clobbered
```
HTML etiketinin Chrome ve Firefox gibi tarayıcılarda SVG içinde çalışabilmesi için `` etiketi gereklidir:
```html
example.com
clobbered
```
## Formları Clobbering
Bazı etiketlerin içine `form` özniteliğini belirterek bir formun içine **yeni girişler eklemek** mümkündür. Bu yöntemi kullanarak bir formun içine **yeni değerler ekleyebilir** ve hatta **göndermek için yeni bir düğme** bile ekleyebilirsiniz (clickjacking veya bazı `.click()` JS kodunu kötüye kullanma):
{% code overflow="wrap" %}
```html
Click to send!
```
{% endcode %}
* Daha fazla form özniteliği için [**burayı kontrol edin**](https://www.w3schools.com/tags/tag\_button.asp)**.**
## Referanslar
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
* Heyes, Gareth. JavaScript for hackers: Bir hacker gibi düşünmeyi öğrenin.
AWS hacklemeyi sıfırdan kahramanlık seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert) !
* Bir **cybersecurity şirketinde** çalışıyor musunuz? **Şirketinizi HackTricks'te reklamını yapmak** ister misiniz? veya **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter**'da beni takip edin 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Hacking hilelerinizi** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **göndererek paylaşın.**