BWAPP靶场-HTML injection-Reflected(GET)
0x00 知識儲備
HTML注入,就是當(dāng)用戶進(jìn)行輸入時,服務(wù)器沒有對用戶輸入的數(shù)據(jù)進(jìn)行過濾或轉(zhuǎn)義,導(dǎo)致所有輸入均被返回前端,網(wǎng)頁解析器會將這些數(shù)據(jù)當(dāng)作html代碼進(jìn)行解析,這就導(dǎo)致一些惡意代碼會被正常執(zhí)行。
0x01 Low
首先輸入1和1測試一下
?發(fā)現(xiàn)結(jié)果正常出現(xiàn)在頁面上,直接試一試XSS
<script>alert(1)</script>1還可以嘗試超鏈接
<a href="http://www.baidu.com">111</a>?
點(diǎn)擊111即可完成跳轉(zhuǎn)
源碼分析:
可以看到?jīng)]有任何處理
0x02 Medium
分析源碼,可以看到,源碼首先將<,>替換成字符實(shí)體(這是因?yàn)檫@些字符在HTML中有特殊含義,所以要想在文本中使用它們我們就需要使用字符實(shí)體),同時利用了urldecode進(jìn)行解碼,也就是對于我們輸入的信息,應(yīng)該是進(jìn)行了兩次url解碼(一次是瀏覽器對輸入數(shù)據(jù)打包傳送給后端時,第二次是后端的url解碼)
所以只需要將要輸入的代碼進(jìn)行兩次url編碼即可,url解碼地址:http://www.jsons.cn/urlencode/
但是這時直接在輸入框中輸入兩次url編碼的結(jié)果發(fā)現(xiàn)和預(yù)期結(jié)果不同!!!
觀察結(jié)果,發(fā)現(xiàn) 顯示的First name是代碼進(jìn)行一次url編碼的結(jié)果。原因是輸入框輸入數(shù)據(jù)后,GET請求將參數(shù)輸入到url地址欄時會進(jìn)行一次url轉(zhuǎn)碼,所以此時地址欄顯示的是代碼三次編碼后的結(jié)果,這樣傳入后端時,瀏覽器解碼一次,后端再解碼一次,顯示出來的結(jié)果就是一次編碼的結(jié)果。所以如果在輸入框輸入時我們只需要輸入一次編碼的結(jié)果即可,而在地址欄中輸入時需要輸入兩次編碼的結(jié)果。
執(zhí)行成功,點(diǎn)擊click即可跳轉(zhuǎn)
0x03 High
分析源碼
htmlspecialchars() 函數(shù)把特殊字符轉(zhuǎn)換為 HTML 實(shí)體。這意味著 < 和 > 之類的 HTML 字符會被替換為 < 和 > 。這樣可防止攻擊者通過在表單中注入 HTML 或 JavaScript 代碼(跨站點(diǎn)腳本攻擊)對代碼進(jìn)行利用。 此時無法再進(jìn)行HTML注入。
第一次寫博客,寫的不對或者不好的地方希望大佬們指出:)
?
?
?
總結(jié)
以上是生活随笔為你收集整理的BWAPP靶场-HTML injection-Reflected(GET)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EJB概念
- 下一篇: IE8中文正式版下载