buuctf web xss之光


前言

最后正在學習了解有關xss的知識。所以拿一些題來學習。從實戰中學習嘛。

OK,話不多說,整活!!!

實戰

今天我們用的是buu里的一道題)——XSS之光。聽着名字還蠻好聽的。

那我們先打開靶場。頁面顯示的就只是gungungun,真讓人火大。參考了一下大佬的文章

工具的安裝

首先還需要兩個工具。dirb掃描目錄(kali自帶)和githack

dirb使用方法:dirb 網址

githack是需要自己安裝的,本人在kali里安裝的。

安裝方法:git clone https://github.com/lijiejie/GitHack
使用方法:python GitHack.py 網址/.git
執行后會在本目錄生成以網址為名字的文件夾

 

解題

首先我們先掃描一下目錄,會發現.git泄露

那我們就用GitHack將源碼下載下來。

 

 

知識點

 

 我們發現只有一個index.php。里面有一段代碼

<?php
$a = $_GET['yds_is_so_beautiful'];
echo unserialize($a);
?>

這里有一個知識點是_to string()

當對象被當作一個字符串使用時候調用時,會觸發:_to string()

__to String() 方法用於一個類被當成字符串時應怎樣回應。例如 echo $obj; 應該顯示些什么。此方法必須返回一個字符串

如何造成xss漏洞呢。我們來看,

 

<?php
$a = unserialize($_GET['abc']);
echo $a;
?>

 

exp:

<?php
$a = new Error("<script>alert(1)</script>");
$b = serialize($a);
echo urlencode($b);
?>

如果將exp傳入到源碼里去,這時它會彈出一個會話框顯示1(這里有點前端基礎的都會明白)。這時就會構成xss漏洞,

我們看exp里的Error類,Error類是php的一個內置類,用於自動自定義一個Error,在php7的環境下可能會造成一個xss漏洞,因為它內置有一個toString的方法。

此類適用於php7版本,同樣有等效的原生php類還有Exception,適用於PHP5、PHP7。用法與error是一樣的這里不在詳細說明。

題目

我們上面已經拿到源碼,源碼就只有一個反序列化過程。然后大佬的文章上面說的是。需要找到php內置類來進行反序列化,而且還有echo,

有了它我們就有足夠條件來使用_toString方法的類進行反序列化,我們使用Exception

就可以構造一小段代碼:

<?php
$a = new Exception("<script>window.location.href='https://www.baidu.com'</script>");
echo urlencode(serialize($a));
?>

這里的window.location.href= 是運用了xss跳轉

主要形成原因是 以前網站外部跳轉時是直接接受參數然后跳轉,導致了URL重定向漏洞.而現在網站喜歡加個跳轉頁,不會直接跳轉,而是接受參數然后用js跳轉. 這就有一個問題 如果未驗證參數, js跳轉時是可以接受js偽協議執行js代碼的.

 

跑一下這個腳本然后再抓包就可以在響應頭里面獲得flag

 

 

 url解一下碼即可

 

參考文獻

xss之光

反序列化之php原生類利用

跳轉xss


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM