[BJDCTF 2nd]假豬套天下第一
假豬套是一個梗嗎?
進入題目,是一個登錄界面,輸入admin的話會返回錯誤,登錄不成功,其余用戶可以正常登陸
以為是注入,簡單測試了一下沒有什么效果
抓包查看信息,發現源代碼有提示
訪問L0g1n.php
顯示需要在99年后才開放訪問,請求頭里面有time,修改成一個很大的數字
返回信息變成了需要從本地訪問,使用XFF或者Client-ip繞過
現在的錯誤信息變成了需要來自於gem-love.com,添加Referer頭
現在變成了需要使用Commodo 64瀏覽器,查一下全稱是:Commodore 64
填在user-agent里面
需要我們的郵箱是:root@gem-love.com,添加From
最后代理服務器地址需要是y1ng.vip,添加via
獲得flag,將其base64對應解碼即可
這位師傅博客header參數寫的很詳細:https://www.cnblogs.com/benbenfishfish/p/5821091.html
搬運一下:
Header | 解釋 | 示例 |
---|---|---|
Accept | 指定客戶端能夠接收的內容類型 | Accept: text/plain, text/html,application/json |
Accept-Charset | 瀏覽器可以接受的字符編碼集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定瀏覽器可以支持的web服務器返回內容壓縮編碼類型。 | Accept-Encoding: compress, gzip |
Accept-Language | 瀏覽器可接受的語言 | Accept-Language: en,zh |
Accept-Ranges | 可以請求網頁實體的一個或者多個子范圍字段 | Accept-Ranges: bytes |
Authorization | HTTP授權的授權證書 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定請求和響應遵循的緩存機制 | Cache-Control: no-cache |
Connection | 表示是否需要持久連接。(HTTP 1.1默認進行持久連接) | Connection: close |
Cookie | HTTP請求發送時,會把保存在該請求域名下的所有cookie值一起發送給web服務器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 請求的內容長度 | Content-Length: 348 |
Content-Type | 請求的與實體對應的MIME信息 | Content-Type: application/x-www-form-urlencoded |
Date | 請求發送的日期和時間 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 請求的特定的服務器行為 | Expect: 100-continue |
From | 發出請求的用戶的Email | From: user@email.com |
Host | 指定請求的服務器的域名和端口號 | Host: www.zcmhi.com |
If-Match | 只有請求內容與實體相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果請求的部分在指定時間之后被修改則請求成功,未被修改則返回304代碼 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果內容未改變返回304代碼,參數為服務器先前發送的Etag,與服務器回應的Etag比較判斷是否改變 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果實體未改變,服務器發送客戶端丟失的部分,否則發送整個實體。參數也為Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在實體在指定時間之后未被修改才請求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards | 限制信息通過代理和網關傳送的時間 | Max-Forwards: 10 |
Pragma | 用來包含實現特定的指令 | Pragma: no-cache |
Proxy-Authorization | 連接到代理的授權證書 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只請求實體的一部分,指定范圍 | Range: bytes=500-999 |
Referer | 先前網頁的地址,當前請求網頁緊隨其后,即來路 | Referer: http://www.zcmhi.com/archives... |
TE | 客戶端願意接受的傳輸編碼,並通知服務器接受接受尾加頭信息 | TE: trailers,deflate;q=0.5 |
Upgrade | 向服務器指定某種傳輸協議以便服務器進行轉換(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的內容包含發出請求的用戶信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中間網關或代理服務器地址,通信協議 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 關於消息實體的警告信息 | Warn: 199 Miscellaneous warning |
[BJDCTF2020]Easy MD5
這道題挺有意思的,考到了很多MD5在CTF里的考點
進入環境之后是一個提交框,url形式是:leveldo4.php,后面我才發現可以直接爆破頁面,就不用挨着做題了。。。
題目叫做easy md5,猜測這里提交上去的數據是會進行MD5之后進入數據庫查詢,盲猜查詢語句為:
$sql = "SELECT * FROM users WHERE password = '".md5($password,true)."'";
然后找了找放哪一句話可以繞過,參考這篇博客:https://www.betao.cn/archives/md5sqlzr.html
我們提交 ffifdyop,轉成MD5后為:276f722736c95d99e921722cf9ed621c
, 再轉成字符串: 'or'6<trash>
'or'6<trash>語句大家都很熟悉了,是標准的萬能密碼登錄,從而進行了繞過,所以我們輸入:ffifdyop
跳轉到了這個頁面,查看源代碼里面的提示
簡單的md5弱類型比較,a[]=1&b[]=2數組繞過
跳轉至第三個界面,md5強類型比較,使用md5碰撞,參考這篇文章:
我在安洵杯的easy_web里面也寫到過:https://www.cnblogs.com/Cl0ud/p/12585242.html
碰撞之后拿到flag