pikachu通關筆記
pikachu
暴力破解
基於表單的暴力破解
上burp直接剛
繞過驗證碼(on server)
在intruder里驗證碼可重復使用
繞過驗證碼(on client)
在intruder里驗證碼也可重復使用,也可以審查元素把相關的代碼刪除
token防爆破
此處我們發現,正確的和錯誤的長度一樣(上帝視角),找token規律也找不出來,但是可以通過抓包發現,返回了下一次使用的token:
滿足以上條件我們就可以使用burp的音叉攻擊進行爆破,線程必須為1,參數為password和token。
password載荷設置:
token載荷設置,類型為遞歸搜索:
選項添加Grep-Extract:
上圖中,第五步復制的value值放入下圖中:
線程設置為1,一定要記住,開始攻擊:
Cross Site Scripting
反射型xss(get)
首先嘗試一手朴實無華的<script>alert(1)</script>,發現它限制了字數,直接審查元素,改它的最大長度,彈窗成功:
反射型xss(post)
需要登陸,登陸后,直接朴實無華,彈窗成功,最簡單的彈窗往往只需要一句<script>alert(1)</script>:
存儲型xss
朴實無華。
DOM型xss
什么是DOM:(DOM) 是中立於平台和語言的接口,它允許程序和腳本動態地訪問和更新文檔的內容、結構和樣式。
好的看完不懂也沒關系,下面兩張圖帶你深入了解。
DOM型不與后台產生交互,僅與前端產生反應,那么我們來看看其實質是什么。
分別輸入hahahh和#' onmouseover=alert(1)>
我們看下面兩張對比圖:
hahahh:
#' onmouseover=alert(1)>:
還是有點sql注入的味道,制造閉合,判斷成為一個彈窗標簽。
onmouseover鼠標超時時彈窗
DOM型xss-x
' onclick="alert('xss')">
審查一下源碼:
xxs之盲打
朴實無華。
前台沒有顯示,點擊提示:
然后去登陸發現有彈窗,其實這也是存儲型的xss
xss之過濾
大小寫繞過:
<ScrIpt>alert(1)<SCript>彈窗成功
xxs之htmlspecialchars
' onclick='alert(1)'
'onmouseover='alert(1)'
'onmouseover='javascript:alert(1)'
xss之href輸出
直接用js協議:
javascript:alert(1)
xss之js輸出
</script><script>alert(1)</script>
審查元素:
CSRF
CSRF(get)
根據提示,先登陸一個用戶
這里我們登陸lili,用burp抓包,修改lili的個人信息后:
復制生成的連接誘導受害者點擊,修改成功
CSRF(post)
和get類似,換湯不換葯
SQL-Inject
數字型注入(post)
burp抓包,數字型,直接id=1 or 1=1爆出所有數據
字符型注入(get)
閉合方式為',直接' union select 1,2--+進行聯合注入
搜索型注入
直接輸入%進行查詢,因為沒有做過濾,%在數據庫的查詢中匹配任意字符
xx型注入
閉合方式為:')sql('
如:')union select 1,2 or ('1')=('1
') or ('1')=('1直接查詢出所有數據
insert/update注入
在注冊的時候,burp抓包,隨便找一個參數,'閉合,repeater報錯注入
如:' and extractvalue(1,concat('~',(select database()))) and '1'='1
也可以在更新信息的時候在抓包,在某一參數,進行如上注入
delete注入
刪除時抓包,發現有一個id參數,為數字型,直接repeater,進行報錯注入,注入時發現,查詢時只查詢id后面的連續的一段字符串,出現空格則后面的不處理,可以用/**/,+來連接,如:
id=-1+and+extractvalue(1,concat('~',(select+database())))
header注入
使用admin/123456登陸時抓包,在User-Agent,Accept,uname三處地方都可以進行報錯注入,為字符型,payload如下:
' and extractvalue(1,concat(0x7e,(database()))) and '1'='1
盲注(base on boolian)
'閉合,'length(database())>n,能看到不同的效果,上burp直接剛
盲注(base on time)
'閉合,kobe'and sleep(5) %23能看到明顯延遲
寬字節注入
'前面加%df實現逃逸轉義,burp抓包直接干,如name=1%df' union select 1,2--+
RCE
RCE概述
遠程系統命令執行,因為設計上需要給用戶提供指定的遠程命令操作的接口,沒有對其做嚴格的輸入控制,導致用戶提交一些其他的系統命令也能夠執行
遠程代碼執行,同樣的,因為需求設計,也會把用戶輸入的作為代碼的一部分來執行,如果要給前端用戶提供操作類的API接口,一定要對輸入的內容做嚴格過濾,比如添加嚴格的白名單策略
exec "ping"
如baidu.com|config
exec "evel"
phpinfo();(不要忘了分號
File Inclusion
概述
文件包含,是一個功能,開發語言內置提供的文件包含函數,可以使一個代碼文件中直接包含(引入)另一個代碼文件,比如PHP提供了:
include(),include_once()
require(),require_once()
當文件包含的代碼文件被寫成了一個變量,且這個變量可以由前端傳進來,則可能引發文件包含漏洞。
分為:
- 本地文件包含漏洞:只能對服務器的本地文件進行包含,攻擊者可用其進行系統敏感信息收集。
- 遠程文件包含漏洞:能夠通過url地址對遠程的文件進行包含,可以傳入任意的代碼。因此在web應用的功能設計上盡量不要讓前端用戶直接傳變量給包含函數,若非要這么做,也一定要做嚴格的白名單策略進行過濾。
File Inclusion(local)
通過觀察可以發現,filename這個參數可以進行文件包含,直接filename=../../../../(不斷添加)然后去訪問C盤目錄下的一些東西進行漏洞驗證,或者以上帝視角自己放一個頁面資源在網站根目錄所在盤的根目錄下去訪問。
File Inclusion(remose)
通過filename訪問url,嘗試一下本地服務器filename=http://127.0.0.1:9096/
Unsafe Filedownload
對用戶要下載的文件沒有做過濾。
火狐下載后可以在下載欄,復制下載鏈接:
然后去瀏覽器輸入:
http://127.0.0.1:9096/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png
我們可以通過filename下載任意文件,如:
Unsafe Fileupload
client check
burp抓包改后綴即可
MIME type
burp抓包,Content-Type處改為image/png即可繞過
getimagesize
判斷了文件有沒有圖片特征,cmd命令合成圖片馬,copy 1.php/a+1.jpg/b 2.jpg即可上傳,使用文件包含即可繞過
Over Permission
權限管理應該遵守:
- 使用最小權限原則對用戶進行賦權
- 使用合理的權限校驗規則
- 使用后台登陸狀態作為條件進行權限判斷,而不是前端傳來的條件
水平越權
登陸,查看信息,抓包,修改uname為其他用戶可以看到其他用戶的信息
垂直越權
通過修改url為op2_admin_edit.php,發現pikachu從普通用戶變成了管理者用戶的權限:
../../
概述
在web功能設計中,很多時候,需要將訪問的文件定義為一個變量,方便動態調用,但是有可能引發目錄遍歷漏洞,(更像是文件包含漏洞)
目錄遍歷
如:title=../../../README.md
3 敏感信息泄露
概述
后台人員的疏忽或者不當的設計,導致不應該被前端用戶看到的數據被輕易的訪問,如:
- 通過url下的目錄,可以直接列出目錄下的文件列表
- 輸入錯誤的url參數后報錯信息里面包含操作系統,中間件,開發語言的版本或其他信息
- 前端的源碼里面包含了敏感信息
IcanseeyourABC
審查元素可以看到注釋里有一個賬號:
PHP反序列化
概述
通俗來說就是把一個對象變成可以傳輸的字符串
反序列化就是把序列化的字符串還原為對象,如:
class S{
public $test="pikachu";
}
$s=new S(); //創建一個對象
serialize($s); //把這個對象進行序列化
序列化后得到的結果是這個樣子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
O:代表object
1:代表對象名字長度為一個字符
S:對象的名稱
1:代表對象里面有一個變量
s:數據類型
4:變量名稱的長度
test:變量名稱
s:數據類型
7:變量值的長度
pikachu:變量值
反序列化就是把被序列化的字符串還原為對象,如:
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
echo $u->test; //得到的結果為pikachu
php反序列化漏洞
payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
XXE
概述 :即xml外部實體注入漏洞
攻擊者通過向服務器注入指定的xml實體內容,從而讓服務器按照指定的配置進行執行,導致問題。
現在很多語言對應的解析xml的函數默認是禁止解析外部實體的。以php為例,在php里面解析xml用的libxml,在>=2.9.0的版本中,是禁止解析xml外部實體內容的。
xxe漏洞:
<?xml version="1.0" ?>
<!DOCTYPE name [
<!ENTITY dawn SYSTEM "file:///E:/phpstudy/WWW/pikachu/index.php">
]>
<name>&dawn;</name>
URL重定向
通過url參數直接重定向
SSRF
概述:服務端請求偽造
SSRF(curl):通過url參數直接訪問內部資源,或者跳轉到其他服務器頁面
SSRF(file_get_content):利用file_get_content("path")利用傳遞的參數,通過file參數訪問內部資源,或者跳轉到其他服務器頁面,如: