[ctfshow web入門] web23

前置知識

include:包含一個文件,也可以包含一些其他東西,后續用到再解析
substr:對字符串進行切片,第一個參數是字符串,第二第三個參數出從第a個索引開始切n個,索引從0開始計數。
例如:$a = substr("012345", 2, 3); ? $a === '234'
intval:其他類型轉換為int類型,不可用于array和object。第一個參數是需要轉換的值,第二個可選參數可以制定進制,默認是十進制。
例如:intval(“a”) ==> 0,intval(“123a”) ? 123,后續的非數字將被截斷,Intval與 ==搭配可能會出現漏洞,后續用到再說。

信息收集

    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){echo $flag;}}

關鍵在于這里,只要按照它的要求跑出這個token即可。所以我們自己構造代碼,隨機生成md5,檢查md5是否滿足要求,若滿足要求,輸出md5對應的字符串。

解題:

為什么是自己跑md5,而不是爆破網站,因為在現實情況下,頻繁訪問網站可能會被ban掉IP。還有一個原因是,爆破網站比本地爆破慢太多了
我只會python,所以用python寫的,如果用php可以直接抄寫它的判斷語句,不用翻譯

import itertools
import hashlib
import string
def md5(s):if type(s) != bytes:s = bytes(s, encoding="utf-8")hash_md5 = hashlib.md5()hash_md5.update(s)return hash_md5.hexdigest()def web23():dir = string.digits + string.ascii_uppercase + string.ascii_lowercase# 這里我不知道多少位能滿足需求,所以寫成變量,如果1-3位跑不出來,我可以跑更多位的for i in range(1, 4):for comb in itertools.combinations_with_replacement(dir, i):str_comb = "".join(comb)v_md5 = md5(str_comb)if v_md5[1] == v_md5[14] == v_md5[17]:try: # 除零異常,字符串無法轉int異常,我懶得處理了,統統忽略就行了if ((int(v_md5[1])+int(v_md5[14])+int(v_md5[17]))/int(v_md5[1])==int(v_md5[31])):print(str_comb)print(v_md5[1], v_md5[14], v_md5[17])except:passif __name__ == '__main__':web23()

跑出來這些結果

3j
6Vh
AKh
JKh
Jik
SVi
UYg
ejt

輸入url/?token=3j拿到flag

web22題目已棄用
web21 ?? 目錄 ?? web24

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3 開發電子地圖功能

文章目錄 一、項目背景二、頁面效果三、代碼1.ElectronicMap.vue2.TransferDeskRSSIMap.vue3.Map.js4.src/stores/index.js Vuex存儲屬性 四、注意點本人其他相關文章鏈接 一、項目背景 項目采用:vue3javaArco DesignSpringBootOpenStreetMap 數據的地圖切片服務。…

oracle 存儲體系結構

oracle 存儲體系結構 參考: Logical Storage Structures (oracle.com)

python-leetcode 66.尋找旋轉排序數組中的最小值

題目: 已知一個長度為n的數組,預先按照升序排列,經由1到n次旋轉后,得到輸入數組,例如,原數組 nums [0,1,2,4,5,6,7] 在變化后可能得到: 若旋轉 4 次,則可以得到 [4,5,6,7,0,1,2]若…

【MATLAB第113期】基于MATLAB的EFAST擴展傅里葉幅度敏感性分析方法(有目標函數)

【MATLAB第113期】基于MATLAB的EFAST擴展傅里葉幅度敏感性分析方法(有目標函數) 一、方法概述 擴展傅里葉幅度敏感性檢驗(EFAST)是一種基于頻域分析的全局敏感性分析方法,能夠同時評估模型參數的一階敏感性&#xff…

Tiktok 關鍵字 視頻及評論信息爬蟲(1) [2025.04.07]

🙋?♀?Tiktok APP的基于關鍵字檢索的視頻及評論信息爬蟲共分為兩期,希望對大家有所幫助。 第一期見下文。 第二期:基于視頻URL的評論信息爬取 1. Node.js環境配置 首先配置 JavaScript 運行環境(如 Node.js)&#x…

【愚公系列】《高效使用DeepSeek》058-選題策劃

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

零基礎教程:Windows電腦安裝Linux系統(雙系統/虛擬機)全攻略

一、安裝方式選擇 方案對比表 特性雙系統安裝虛擬機安裝性能原生硬件性能依賴宿主機資源分配磁盤空間需要獨立分區(建議50GB)動態分配(默認20GB起)內存占用獨占全部內存需手動分配(建議4GB)啟動方式開機選…

LeetCode 2968.執行操作使頻率分數最大

給你一個下標從 0 開始的整數數組 nums 和一個整數 k 。 你可以對數組執行 至多 k 次操作: 從數組中選擇一個下標 i ,將 nums[i] 增加 或者 減少 1 。 最終數組的頻率分數定義為數組中眾數的 頻率 。 請你返回你可以得到的 最大 頻率分數。 眾數指的…

excel經驗

Q:我現在有一個excel,有一列數據,大概兩千多行。如何在這一列中 篩選出具有關鍵字的內容,并輸出到另外一列中。 A: 假設數據在A列(A1開始),關鍵字為“ABC”在相鄰空白列(如B1)輸入公…

HTTP查詢參數示例(XMLHttpRequest查詢參數)(帶查詢參數的HTTP接口示例——以python flask接口為例)flask查詢接口

文章目錄 HTTP查詢參數請求示例接口文檔——獲取城市列表代碼示例效果 帶查詢參數的HTTP接口示例——以python flask接口為例app.pyREADME.md運行應用API示例客戶端示例關鍵實現說明:運行方法: HTTP查詢參數請求示例 接口文檔——獲取城市列表 代碼示例…

將飛帆制作的網頁作為 div 集成到自己的網頁中

并且自己的網頁可以和飛帆中的控件相互調用函數。效果: 上鏈接 將飛帆制作的網頁作為 div 集成到自己的網頁中 - 文貝 進入可以復制、運行代碼

Redis主從復制:告別單身Redis!

目錄 一、 為什么需要主從復制?🤔二、 如何搭建主從架構?前提條件?步驟📁 創建工作目錄📜 創建 Docker Compose 配置文件🚀 啟動所有 Redis🔍 驗證主從狀態 💡 重要提示和后續改進 …

k8s 1.30.6版本部署(使用canal插件)

#系統環境準備 參考 https://blog.csdn.net/dingzy1/article/details/147062698?spm1001.2014.3001.5501 #配置下載源 curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key |gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyri…

機器學習的一百個概念(7)獨熱編碼

前言 本文隸屬于專欄《機器學習的一百個概念》,該專欄為筆者原創,引用請注明來源,不足和錯誤之處請在評論區幫忙指出,謝謝! 本專欄目錄結構和參考文獻請見[《機器學習的一百個概念》 ima 知識庫 知識庫廣場搜索&…

RHCSA復習

在Linux中, wrx 分別代表寫(write)、讀(read)和執行(execute)權限,它們對應的權限值分別是: - r (讀權限):權限值為4。 - w &am…

“樂企“平臺如何重構業財稅票全流程生態?

2025年,國家稅務總局持續推進的"便民辦稅春風行動"再次推進數字化服務升級,其中"樂企"平臺作為稅務信息化的重要載體,持續優化數電票服務能力,為企業提供更高效、更規范的稅務管理支持。在這一背景下&#xf…

Android audio(6)-audiopolicyservice介紹

AudioPolicyService 是策略的制定者,比如某種 Stream 類型不同設備的音量(index/DB)是多少、某種 Stream 類型的音頻數據流對應什么設備等等。而 AudioFlinger 則是策略的執行者,例如具體如何與音頻設備通信,維護現有系…

Boost庫搜索引擎項目(版本1)

Boost庫搜索引擎 項目開源地址 Github:https://github.com/H0308/BoostSearchingEngine Gitee:https://gitee.com/EPSDA/BoostSearchingEngine 版本聲明 當前為最初版本,后續會根據其他內容對當前項目進行修改,具體見后續版本…

git分支合并信息查看

TortoiseGit工具 1、選擇"Revision graph" 2、勾選view中的 Show branchings and merges Arrows point towards merges 3、圖案說明 紅色部分?:代表當前分支 橙色部分?:代表遠程分支 黃色部分?:代表一個tag 綠色部分?&#xf…

Java學習筆記(多線程):ReentrantLock 源碼分析

本文是自己的學習筆記,主要參考資料如下 JavaSE文檔 1、AQS 概述1.1、鎖的原理1.2、任務隊列1.2.1、結點的狀態變化 1.3、加鎖和解鎖的簡單流程 2、ReentrantLock2.1、加鎖源碼分析2.1.1、tryAcquire()的具體實現2.1.2、acquirQueued()的具體實現2.1.3、tryLock的具…