目錄
[BJDCTF 2020]easy_md5
ffifdyop
[SWPUCTF 2021 新生賽]crypto8
[HNCTF 2022 Week1]Interesting_include
php://filter協議
[GDOUCTF 2023]泄露的偽裝
[BJDCTF 2020]easy_md5
嘗試輸入一個1,發現輸入的內容會通過get傳遞但是沒有其他回顯
觀察一下響應頭,可以看到Hint,即后端處理的SQL語句:
select * from 'admin' where password=md5($pass,true)//md5函數(string,raw)用法:string:字符串,必選參數raw:可選參數,通過post傳遞True //原始16字符二進制數False //默認32字符十六進制數
什么是hint?
hint 是Oracle 提供的一種SQL語法,它允許用戶在SQL語句中插入相關的語法,從而影響SQL的執行方式。
ffifdyop
nssctf web_[nctf 2018]簽到題-CSDN博客
sql查詢語句目的是???? passdword=傳遞的值
在sql語句中 or 左右一邊為true則語句都為true(或邏輯)
這也是or 1 = 1 的由來,所以在這里要嘗試構造帶or的參數
or 對應的16進制:276f7227
ffifdyop字符串被 md5 哈希了之后會變成276f7227 36c95d99e921722cf9ed621c
字符串前幾位剛好是 ‘ or ‘6,并且 Mysql 又會把 hex 轉成 ascii 解釋,因此拼接之后的形式是
select * from ‘admin’ where password=''or' 6xxxxx'
//xxxxx指代任意字符
此處raw參數是True,意為返回原始16字符二進制格式。
將ffifdyop傳入,得到新環境
查看源代碼,發現GET傳參a!=b,但是它們的MD5值相等,且此處為(==)弱比較類型
原理見[SWPUCTF 2021 新生賽]jicao、easy_md5-CSDN博客
(1)用數組繞過?
?(2)用科學計數法0e繞過
又見一個新環境,POST傳參了param1!=param2
但是它們的MD5值相等,且此處為(===)強比較類型,使用數組繞過
[SWPUCTF 2021 新生賽]crypto8
下載附件,查看資料知其為UUencode編碼
[HNCTF 2022 Week1]Interesting_include
POST傳參filter,包含在flag.php文件里
正則過濾了 flag ,但是沒有flag又會返回錯誤
php://filter協議
于是使用php://filter協議,讀取源代碼并進行base64編碼輸出。
php://filter/convert.base64-encode/resource=文件路徑
構造payload:
?filter=php://filter/convert.base64-encode/resource=flag.php
base64解碼得到flag
[GDOUCTF 2023]泄露的偽裝
使用dirsearch掃描,發現狀態碼為200的/www.rar目錄,url下載壓縮包
訪問路徑/orzorz.php得到新環境,GET傳參cxk
error_reporting(0);
:這行代碼設置錯誤報告級別為0,意味著在運行時不會顯示任何錯誤信息。通常用于生產環境中,以防止敏感信息泄露給用戶。
file_get_contents($cxk)
函數:讀取$cxk
變量中指定的 URL 或文件的內容。這就需要傳入一個文件,如果文件內容等于
"ctrl"
,則返回flag
利用date://協議構造payload:
?cxk=data://text/plain,ctrl