输入1留言后发现被存储了,因此可以猜测是存储型xss。

输入<script>,<ScRiPt>,<img>,javascript:都被拦,但还有<a href> 这种点击型没被拦




因为明文javascript:被拦截,所以我们把第一个字母进行html编码化,即j
所以输入留言的payload如下:
<a href="jscript:alert(1)">111</a>
<a href="...">:超链接标签,黑名单没禁<a>;href里正常写网址,写成javascript:JS代码这种 "伪协议",意思是点链接时执行冒号后的 JS;j:把javascript:的首字母 j 藏起来,骗过明文匹配;alert(1):探针,能弹窗就证明 JS 执行成功;>111</a>:页面上显示一个可点的 "111"。
多了个蓝色字体的111,点击后就存储成功了。

通过bp发现留言的message和访客的visitor_code。


查看网页源代码还发现了一个接口:

并且下面还告诉了我们的请求方式:
POST /api/check_xss HTTP/1.1 ← 请求行:提交到哪个接口
Content-Type: application/json ← 请求头:告诉服务器“体是JSON格式”
← 空行
{"message":"x"} ← 请求体:真正的数据,键值对,值什么都行,这里是x
抓包然后进行对应修改:

发现访客码haobachang666999.,成功进去。

查看网页源代码发现有个崩将军账号。

输入1提示账号不存在,输入bengjiangjun123 提示账号或密码错误


因为有输入框,知道账号需要密码,所以猜测要在密码进行sql注入。
输入万能密码。
' or '1'='1'-- -

成功登录。

每个页面内容如下:






先看修改密码的源代码,发现只需要输入账户和新密码而不用旧密码,也就是说我们bp抓包后修改账户和新密码然后放包便修改成功,便可以用修改后的账号登录。

查看巡逻日志的网页源代码发现有一串编码,看着像base64,进行解码。


得到了个新用户名就可以进行抓包了,输入1后进行抓包。



放包后修改成功。

退出账户后再用修改后的进行登录,成功看到flag。


转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_73077146/article/details/165119968




