來(lái)源:http://bbs.ichunqiu.com/thread-10532-1-1.html?from=ch
最近在學(xué)習(xí)代碼審計(jì)看了許多教程現(xiàn)在來(lái)說(shuō)說(shuō)儲(chǔ)存型的XSS形成。
什么是儲(chǔ)存型XSS?存儲(chǔ)型XSS,持久化,代碼是存儲(chǔ)在服務(wù)器中的,如在個(gè)人信息或發(fā)表文章等地方,加入代碼,如果沒(méi)有過(guò)濾或過(guò)濾不嚴(yán),那么這些代碼將儲(chǔ)存到服務(wù)器中,用戶訪問(wèn)該頁(yè)面的時(shí)候觸發(fā)代碼執(zhí)行。這種XSS比較危險(xiǎn),容易造成蠕蟲(chóng),盜竊cookie等。
下面我們來(lái)搭建一個(gè)本地漏洞平臺(tái)進(jìn)行演示。【說(shuō)明一下代碼是暗月某課程里面挖來(lái)的不過(guò)因?yàn)橛悬c(diǎn)老所以有些語(yǔ)句寫(xiě)法不用了,所以找了團(tuán)隊(duì)某個(gè)牛給改改了】
樣式如下,源文件肯定也會(huì)發(fā)出來(lái)給你們自己動(dòng)手操作的。

[PHP]純文本查看復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
mysql_connect('localhost','root','root');
mysql_select_db('test');
mysql_query("set names gbk");
if(isset($_POST['submit'])){
$title=$_POST['title'];$con=$_POST['con'];
$sql="INSERT INTO `book` (`id` ,`title` ,`con`)VALUES (NULL , '$title', '$con');";
if(mysql_query($sql))
{echo"留言成功";
}else{
echo"留言失敗";
}
}else{
$sql="select * from book";
if($row=mysql_query($sql)){
while($rows=mysql_fetch_array($row)){
echo$rows['id'].$rows['title'].$rows['con']."
";
//echo htmlspecialchars ($rows['id'].$rows['title'].$rows['con']."
");
}
}
}
?>
i春秋儲(chǔ)存XSS審計(jì)與防御【代碼來(lái)自暗月后團(tuán)隊(duì)大牛改寫(xiě)】
標(biāo)題:內(nèi)容:
下面是mysql的表。
[SQL]純文本查看復(fù)制代碼
1
2
3
4
5
6CREATETABLE`book` (
`id`int(5)NOTNULLauto_increment, `title`varchar(32)NOTNULL,
`con` textNOTNULL,PRIMARYKEY(`id`)
) ENGINE=MyISAMDEFAULTCHARSET=gbk AUTO_INCREMENT=1 ;
好了我們先看看能不能留言成功!

留言成功,我們讓看看我們留言的內(nèi)容。


下面我們測(cè)試一下我們的跨站腳本。我們用HACKbar生成一個(gè)payload .

我們插入一下.【嘿別想歪了......】成功留言。


我們返回看一下留言的內(nèi)容,成功觸發(fā)了XSS。


下面我們分析他的源代碼,原因很常見(jiàn)。
[PHP]純文本查看復(fù)制代碼
1
2$title=$_POST['title'];
$con=$_POST['con'];
這兩處變量參數(shù)沒(méi)有任何過(guò)濾導(dǎo)致了下面
[PHP]純文本查看復(fù)制代碼
1
echo$rows['id'].$rows['title'].$rows['con']."
");
輸出語(yǔ)句毫無(wú)保留的輸出出去了......
心細(xì)的同學(xué)可能發(fā)現(xiàn)了,在這輸出語(yǔ)句下面我還注釋了一串輸出語(yǔ)句。
那個(gè)注釋的語(yǔ)句是干什么的那?如果各位在寫(xiě)代碼時(shí)候已經(jīng)寫(xiě)了很多了又不想翻回去添加過(guò)濾的代碼
[PHP]純文本查看復(fù)制代碼
1
htmlspecialchars
函數(shù)可以幫助你完美的解決問(wèn)題。下面我們演示一下,注釋上面直接輸出語(yǔ)句使用我們過(guò)濾語(yǔ)句。


大家看見(jiàn)了咱們的腳本被轉(zhuǎn)義了
[PHP]純文本查看復(fù)制代碼
1
htmlspecialchars
[PHP]純文本查看復(fù)制代碼
1
2預(yù)定義的字符是:
& (和號(hào)) 成為 &" (雙引號(hào)) 成為 "' (單引號(hào)) 成為 '< (小于) 成為 < > (大于) 成為 >
在學(xué)習(xí)時(shí)候我問(wèn)了zusheng??咱們還可以
[PHP]純文本查看復(fù)制代碼
1
$cahr= htmlspecialchars(需要轉(zhuǎn)譯的字符串);
自定義轉(zhuǎn)義字符來(lái)過(guò)濾XSS跨站腳本。
拿儲(chǔ)存型XSS一半都是獲取cookies的我們演示一下如何獲取cookies。那我團(tuán)隊(duì)私有的xss平臺(tái)做演示。成功獲取。



學(xué)習(xí)完以后大家記住要把學(xué)習(xí)感悟發(fā)到本文下面哦?。。。。。。 ?/p>