实验吧-拐弯抹角
拐彎抹角
原題鏈接
http://ctf5.shiyanbar.com/indirection/
分析
<?php // code by SEC@USTCecho '<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;//這道題目本身也有教學(xué)的目的 //第一,我們可以構(gòu)造 /indirection/a/../ /indirection/./ 等等這一類的 //所以,第一個要求就是不得出現(xiàn) ./ if($flag && strpos($URL, './') !== FALSE){$flag = "";$stop = 1; //Pass }//第二,我們可以構(gòu)造 \ 來代替被過濾的 / //所以,第二個要求就是不得出現(xiàn) ../ if($flag && strpos($URL, '\\') !== FALSE){$flag = "";$stop = 2; //Pass }//第三,有的系統(tǒng)大小寫通用,例如 indirectioN/ //你也可以用?和#等等的字符繞過,這需要統(tǒng)一解決 //所以,第三個要求對可以用的字符做了限制,a-z / 和 . $matches = array(); preg_match('/^([0-9a-z\/.]+)$/', $URL, $matches); if($flag && empty($matches) || $matches[1] != $URL){$flag = "";$stop = 3; //Pass }//第四,多個 / 也是可以的 //所以,第四個要求是不得出現(xiàn) // if($flag && strpos($URL, '//') !== FALSE){$flag = "";$stop = 4; //Pass }//第五,顯然加上index.php或者減去index.php都是可以的 //所以我們下一個要求就是必須包含/index.php,并且以此結(jié)尾 if($flag && substr($URL, -10) !== '/index.php'){$flag = "";$stop = 5; //Pass }//第六,我們知道在index.php后面加.也是可以的 //所以我們禁止p后面出現(xiàn).這個符號 if($flag && strpos($URL, 'p.') !== FALSE){$flag = "";$stop = 6; //Pass }//第七,現(xiàn)在是最關(guān)鍵的時刻 //你的$URL必須與/indirection/index.php有所不同 if($flag && $URL == '/indirection/index.php'){$flag = "";$stop = 7; //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>';題目的意思就是通過改變URL地址欄訪問index.php,但是限制了條件不能使用 ./ ../ \\ 而且只能使用小寫字母,不可以在php后加點(diǎn),
關(guān)鍵是不能直接是http://ctf5.shiyanbar.com/indirection/index.php
這里我們可以利用偽靜態(tài)技術(shù),使用http://ctf5.shiyanbar.com/indirection/index.php/index.php,index.php后的index.php會被當(dāng)做參數(shù)處理,所以服務(wù)器只會解析第一個index.php,滿足條件成功繞過。
URL偽靜態(tài)就是通過對動態(tài)網(wǎng)頁進(jìn)行URL處理(重寫),從而實(shí)現(xiàn)看起來像是靜態(tài)URL頁面(而實(shí)際網(wǎng)頁目錄或路徑中沒有該頁面)的方法,表現(xiàn)形式主要是去掉動態(tài)網(wǎng)頁QUERY參數(shù),還有可以讓URL看起來更加有序條理。舉個例子:
http://www.example.com/test.php?cate=soft&page=2,這是典型的動態(tài)頁面。
經(jīng)過偽靜態(tài)處理,可能變成http://www.example.com/test/soft/index/2.html,如果有多個類似頁面,URL看起來就會更加舒服。
偽靜態(tài)技術(shù)在Wordpress、Discuz、Z-BLOG及各種CMS中都有運(yùn)用,偽靜態(tài)的目的無非是看起來更加舒服,據(jù)說對搜索引擎更加友好,天緣不懂SEO就不說了。
flag
CTF{PSEDUO_STATIC_DO_YOU_KNOW}
知識點(diǎn)
URL 偽靜態(tài)技術(shù)
總結(jié)
- 上一篇: 计算机软件安装检查工具,pc healt
- 下一篇: IT岗位说明书(岗位职责)