[ångstromCTF 2022]Auth Skip
if (req.cookies.user === "admin") {
res.type("text/plain").send(flag);
伪造cookie
user:admin
访问网站根目录
actf{passwordless_authentication_is_the_new_hip_thing}
[ångstromCTF 2022]crumbs
挺好,跑脚本的题目
import requests
import re
url0 = "https://crumbs.web.actf.co/"
lis = ["61f57d99-6d8e-4e5e-bfc1-995dc358fce7"]
proxies = { "http": None, "https": None} #3.7以后要添加代理池
while True:
url = url0 + lis[0]
resp = requests.get(url,proxies=proxies)
print(resp.text)
if 'actf{' in resp.text:
print(resp.text)
break
lis = re.findall(r"Go to (.*)",resp.text)
print("************")
print(lis[0])
print("**************")
要1000次
[ångstromCTF 2022]Xtra Salty Sardines
看了半天题,居然没看出这道题目的暗示是xss(有红色高亮),也没发现有bot
结论:认真审题
一开始是通过回显发现</script>
标签消失了,然后再排除了长度限制这种可能后,推测后面不会被过滤然后我才试出来的
<script>1<script>alert(1);</script>
发现后仔细阅读代码才发现,是因为replace函数没有加/g,只能匹配到从左到右的第一个
str.replace(regexp|substr, newSubStr|function)
没加/g可以使用replaceall,像他下面的代码那样
随后xss,参考jacko大神的吧:https://www.wolai.com/7GFxCtGFicnsAND2eS3VgX
比较特别的是,这个有同源策略的限制:
[ångstromCTF 2022]No Flags?
sqlite的洞,根据dockerfile可知是要运行/printflag
于是这波学了一下sqlite
- sqlite rce : 把sqlite变成可执行的恶意文件(也可shell)
- sqlite 写文件:attach写马(本题正解)
- sqite load_extension 远程加载恶意拓展(网上资料不是很清楚)
环境搭建
sqlite
build.php
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
CREATE TABLE Flags
(ID INT PRIMARY KEY NOT NULL,
flag TEXT NOT NULL);
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo "Table created successfully\n";
}
$db->close();
?>
访问一下生成那啥db
之后连上直接开玩
就是新建一个数据库,再建一个表,然后插入木马
建库那里指定路径,表里面设置内容为text和数据类型
前面那坨是固定的
[ångstromCTF 2022]Art Gallery
里面有个目录穿越,../../就到了根目录,不过主要是发现git泄露(题目描述有暗示)
└─$ curl https://art-gallery.web.actf.co/gallery?member=../.git/HEAD
ref: refs/heads/master
要用对工具gakki429/Git_Extract: 提取远程 git 泄露或本地 git 的工具 (github.com)
拉下来就有,在git里面
[ångstromCTF 2022]Secure Vault
代码中user.restricted设置为true,因此需要将其设置为null,发现js代码中有delete功能能够
将users[uid]删除,即user.restricted为null。
我们只需要随便创建账号登录进去,然后复制cookies{token:xxxxx},并delete账户。
回到/vault页面,将名称token和值xxxxx赋予cookies,刷新即可。
[ångstromCTF 2022]cliche
xss,然后提示了markdone,就想到hgame的markdone编辑器了,当时琢磨过类似的payload
其实题目名称是暗示click,想到comfirm事件
Payload
%3Cdiv%20id=%221%0d%0d)//)%22%3E
简单讲一下,![]()
这个是图片链接,里面可以用这些contenteditable/autofocus/onfocus来触发js
外面要套一层div,因为他会自动给我们上双引号,双引号和斜杠这些自己看源码调
建议python 监听,因为有时候X的是自己的