nssctf web 入门(7)

这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。

想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。

[SWPUCTF 2021 新生赛]hardrce

[SWPUCTF 2021 新生赛]hardrce

nssctf web 入门(7)_第1张图片

','\=','\`',]; #这里定义了一个黑名单数组
    foreach ($blacklist as $blackitem)  #foreach在php中用于遍历数组,这里代表将blacklist中的每个元素挨个取出放到blackitem中
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) { #通过preg_match匹配wllm中有没有blacklist中的内容 .在这里用来拼接 /m代表匹配多行字符串,也就是匹配所有的内容
        die("LTLT说不能用这些奇奇怪怪的符号哦!");
    }}
if(preg_match('/[a-zA-Z]/is',$wllm)) #绕通过preg_match匹配所有的大小写字符串
{
    die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm); #eval执行php代码
}
else
{
    echo "蔡总说:注意审题!!!";
}
?> 蔡总说:注意审题!!!

这里过滤了所有的字母我们肯定要编码,同时又过滤了很多字符,我们发现没有过滤% url编码是将url中非ascill码和特殊字符转换为可接受的ascll码的过程,%带着16进制编码

 这里像system这种普通文本不用经过url转换我们可以用~取反来帮我们

nssctf web 入门(7)_第2张图片

 

nssctf web 入门(7)_第3张图片

 绕过了但是ls没有东西这里没有过滤()我们试试将()不编码

nssctf web 入门(7)_第4张图片

(~system)(~ls /)

nssctf web 入门(7)_第5张图片

写进去的时候不要有D6D7

nssctf web 入门(7)_第6张图片

 [SWPUCTF 2021 新生赛]finalrce

[SWPUCTF 2021 新生赛]finalrce

|\<|\%|\$/i',$url))  #通过preg_match判断url中中有没有像bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$中的内容    /i代表匹配大小写
{
        echo "Sorry,you can't use this.";
    }
    else
    {
        echo "Can you see anything?";
        exec($url);  #exec是执行命令的函数,这里会执行url的值
    }
}

nssctf web 入门(7)_第7张图片

 这里我们通过\来绕过如l\s 我们知道\在正则表达式中有特殊含义可以用来匹配特殊字符,这里我们代表匹配以l开头\s代表匹配一个空白字符

由此我们通过正则匹配的方式绕过了过滤 之外我们考虑exec会执行命令但是因为没有回显,所有我们不知道有什么内容这里>也被过滤了无法通过>输出到文件中

在linux中tee是一个命令行工具,可以以标准输出复制到标准输出 一般是将终端输出输出到文件

如ls | tee 1.txt 这个命令会将ls执行的结果输出到终端同时会输出到1.txt中所有我们可以使用tee来显示结果

所以得到payload l\s / | tee 1.txt

这里查看根目录下的文件

nssctf web 入门(7)_第8张图片

 

 nssctf web 入门(7)_第9张图片

 这里没有过滤tac 我们使用tac

tac /flllllaaaaaaggggggg 因为在过滤规则中有la使用我们要通过\转义符使la的a变成普通字符这样就不会触发la的特殊方式

nssctf web 入门(7)_第10张图片

 nssctf web 入门(7)_第11张图片

 

 

你可能感兴趣的:(nssctf,web入门,前端,php,服务器)