天天看點

拐彎抹角——實驗吧

剛剛做了實驗吧的題目,現在整理一下

寫出解題思路,希望能夠幫助到那些需要幫助的人

所有的wp都是以一題一篇的形式寫出

主要是為了能夠讓讀者更好的閱讀以及查找,

希望你們不要責怪!!共勉!!!

永遠愛你們的————新寶寶

拐彎抹角分值:10

  • 來源:  cwk32
  • 難度:易
  • 參與人數:7523人
  • Get Flag:2936人
  • 答題人數:3047人
  • 解題通過率:96%

如何欺騙伺服器,才能拿到Flag?

格式:CTF{}

解題連結: 

http://ctf5.shiyanbar.com/indirection/ 

拐彎抹角——實驗吧

解題思路:這一題的代碼比較有意思,并且一開始看到代碼

并沒有多少思路,隻是看到一些大佬寫的解題思路之後就會發現

這個是屬于僞靜态,現在我們需要了解一下僞靜态的知識:

https://baike.baidu.com/item/%E4%BC%AA%E9%9D%99%E6%80%81/2234695?fr=aladdin

就會發現這個百度,好像看的不太懂,我就總結一下下:

僞靜态:

   url中含有xxxx.php/xx/x,那麼.php後的xx就會被當成參數名,x會被當成參數

   http://ctf5.shiyanbar.com/indirection/index.php/user/index.php,雖然在index.php後面還加上了一些東西,

  但是這個user會被解析成參數名,而index.php則會被解析成user的值

就是這個意思,接下來看看代碼就會發現,這個出題人很善良,畢竟解釋的很清楚:

<?php // code by SEC@USTC echo '<html><head><meta http-equiv="charset" content="gbk"></head><body>'; $URL = $_SERVER['REQUEST_URI']; //echo 'URL: '.$URL.'<br/>'; $flag = "CTF{???}"; $code = str_replace($flag, 'CTF{???}', file_get_contents('./index.php')); $stop = 0; //這道題目本身也有教學的目的 //第一,我們可以構造 /indirection/a/../ /indirection/./ 等等這一類的 //是以,第一個要求就是不得出現 ./ if($flag && strpos($URL, './') !== FALSE){     $flag = "";     $stop = 1;        //Pass } //第二,我們可以構造 \ 來代替被過濾的 / //是以,第二個要求就是不得出現 ../ if($flag && strpos($URL, '\\') !== FALSE){     $flag = "";     $stop = 2;        //Pass } //第三,有的系統大小寫通用,例如 indirectioN/ //你也可以用?和#等等的字元繞過,這需要統一解決 //是以,第三個要求對可以用的字元做了限制,a-z / 和 . $matches = array(); preg_match('/^([0-9a-z\/.]+)$/', $URL, $matches); if($flag && empty($matches) || $matches[1] != $URL){     $flag = "";     $stop = 3;        //Pass } //第四,多個 / 也是可以的 //是以,第四個要求是不得出現 // if($flag && strpos($URL, '//') !== FALSE){     $flag = "";     $stop = 4;        //Pass } //第五,顯然加上index.php或者減去index.php都是可以的 //是以我們下一個要求就是必須包含/index.php,并且以此結尾 if($flag && substr($URL, -10) !== '/index.php'){     $flag = "";     $stop = 5;        //Not Pass } //第六,我們知道在index.php後面加.也是可以的 //是以我們禁止p後面出現.這個符号 if($flag && strpos($URL, 'p.') !== FALSE){     $flag = "";     $stop = 6;        //Not Pass } //第七,現在是最關鍵的時刻 //你的$URL必須與/indirection/index.php有所不同 if($flag && $URL == '/indirection/index.php'){     $flag = "";     $stop = 7;        //Not Pass } if(!$stop) $stop = 8; echo 'Flag: '.$flag; echo '<hr />'; for($i = 1; $i < $stop; $i++)     $code = str_replace('//Pass '.$i, '//Pass', $code); for(; $i < 8; $i++)     $code = str_replace('//Pass '.$i, '//Not Pass', $code); echo highlight_string($code, TRUE); echo '</body></html>';

這個我們可以根據他的要求:

拐彎抹角——實驗吧
拐彎抹角——實驗吧
拐彎抹角——實驗吧

根據這三個要求就會得到:

http://ctf5.shiyanbar.com/indirection/index.php/a/index.php

拐彎抹角——實驗吧

得到最後答案:CTF{PSEDUO_STATIC_DO_YOU_KNOW}

您可以考慮給部落客來個小小的打賞以資鼓勵,您的肯定将是我最大的動力。

拐彎抹角——實驗吧
拐彎抹角——實驗吧

作者:

落花四月

出處:

https://www.cnblogs.com/lxz-1263030049/

關于作者:潛心于網絡安全學習。如有問題或建議,請多多賜教!

版權聲明:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接.

特此聲明:所有評論和私信都會在第一時間回複。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我

聲援部落客:如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!