用CTFShow例题练习命令执行web29-web40

大家好,这里是KOKO~

之前我们通过CTFShow的题目对信息收集爆破类题目进行了针对练习,今天我们则开始命令执行的练习!

命令执行

简单绕过

web29

avatar

看到题目我们可以知道,这道题应该是考查过滤:

avatar

我们打开环境后看到代码,发现本题用到了preg_match()函数,在传参的时候过滤了关键字flag,因此我们需要绕过这次过滤。

*preg_match()*函数——进行正则表达式匹配:
int preg_match(string $pattern,string $subject[,array $matches[,int f l a g s ] ] ) 在 ∗ s u b j e c t ∗ 字 符 串 中 搜 索 与 ∗ p a t t e r n ∗ 给 出 的 正 则 表 达 式 相 匹 配 的 内 容 。 如 果 提 供 了 ∗ m a t c h e s ∗ , 则 会 被 搜 索 的 结 果 所 填 充 。 ∗ flags]]) 在*subject*字符串中搜索与*pattern*给出的正则表达式相匹配的内容。 如果提供了*matches*,则会被搜索的结果所填充。 * flags]])subjectpatternmatchesmatches[0]*将包含与整个模式匹配的文本
*$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
preg_match()返回pattern所匹配的次数。要么是0次(没有匹配),或1次。因为
preg_match()*在第一次匹配后将停止搜索。preg_match_all()则相反,会一直搜索到subject的结尾处。如果出错preg_match()返回FALSE。
Tip:
如果只想查看一个字符串是否包含在另一个字符串中,不要用preg_match()。可以用strpos()或strstr()替代,要快得多。

题目中过滤了flag,所以我们用占位符?
*通配符 ?表示一个字符;表示多个字符
我们用cp命令,将flag.php文件的内容复制到1.txt文件里:

avatar

因此我们直接访问1.txt即可得到flag。

avatar

web30

avatar

由题目可得,本题应该也是过滤的题目。

打开环境后看到代码,进行分析:

avatar

由代码我们可知,本题在传参的时候过滤了关键字flagsystemphp
和上道题一样,我们再次使用占位符?,并用cp命令复制过去:

avatar

再直接访问1.txt文件即可得到 flag!

avatar

web31

avatar

题目和前两道一样,应该也是传参时过滤了很多关键字。我们打开环境看一下:

avatar

确实是加了很多关键字,有很多绕过的命令都不能使用了!

我们可以嵌套eval执行。我们通过嵌套使参数c的值被参数1覆盖,而参数1脱离了c的正则判断,所以我们在参数1里使用被down掉的关键字仍旧可以执行:

/?c=eval($_GET[1]);&1=phpinfo();
  • 方法一:用tac逆向返回:

avatar

  • 方法二:用cat命令,再查看源码:

![avatar][base64str12]
![avatar][base64str13]

web32

![avatar][base64str14]

看题目应该也是命令绕过。

![avatar][base64str15]

这次关键字快把所有绕过的命令都包括了。

我们仍旧使用嵌套,这次使用include
空格被down掉了,我们可以使用换行符%0a
分号也被down掉了,我们可以使用?>来闭合;
读取文件可以使用文件包含的插件,即使用指定通道读取某个文件,本题中我们使用filter通过base64编码过滤器来读取flag.php文件:

/?c=include%0a$_GET[1]?>&1=/etc/passwd

![avatar][base64str16]

得到编码后进行base64解码即可得到flag!

![avatar][base64str17]
![avatar][base64str18]

web33

![avatar][base64str19]

本题仍是绕过。

![avatar][base64str20]

本题比上题多包括了双引号"
我们将include换成require其余与上题相同即可:

![avatar][base64str21]
![avatar][base64str22]

web34

![avatar][base64str23]

仍旧是过滤:

![avatar][base64str24]

这次多过滤了冒号:,过滤了直接进行伪协议的函数。
我们和上题一样,即可得到flag!

![avatar][base64str25]
![avarar][base64str26]

web35

![avatar][base64str27]

本题仍旧是过滤绕过题目。

![avatar][base64str28]

这次多限制了<=
和上题一样,即可得到flag!

![avatar][base64str29]
![avatar][base64str30]

web36

![avatar][base64str31]

继续绕过~

![avatar][base64str32]

这次down掉了数字,我们将参数1换成任意一个字母,其余与上题相同即可得到flag!

![avatar][base64str33]
![avatar][base64str34]

web37

![avatar][base64str35]

继续绕~

![avatar][base64str36]

本题考查伪协议,我们使用base64编码访问flag.php,再查看源码即可得到flag!

![avatar][base64str37]
![avatar][base64str38]

web38

![avatar][base64str39]

接着绕~

![avatar][base64str40]

本题不仅考查伪协议,还要求绕过关键字。我们和上题一样用base64编码即可得到flag!

![avatar][base64str41]
![avatar][base64str42]

web39

![avatar][base64str43]

继续进行绕~

![avatar][base64str44]

无回显,并且强制加了后缀,按下图即可得到flag!

![avatar][base64str45]

web40

![avatar][base64str46]

咱接着绕~

![avatar][base64str47]

细节问题,虽然过滤了括号,但是只过滤了中文括号,因此当成套娃题目做即可!

![avatar][base64str48]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值