PHP代碼審計(jì)儲(chǔ)存XSS形成防御加利用篇

來(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>

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

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

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