2.19學習(php文件后綴)

misc

buu-后門查殺

下載附件,我們用火絨安全掃一下然后點擊詳情進入該文件所在文件夾,再用記事本打開該文件,搜索flag無果,再試試pass(由題目中的密碼聯系到pass,password,key等),然后看到了一個將這個內容提交試試,成功

crypto

buu-rsa2

打開文件,看到e的值很大,那么這是低解密指數,找到模板,求d(因為在文件中有一個未定義的變量d)

import gmpy2
def transform(x,y):       #使用輾轉相處將分數 x/y 轉為連分數的形式res=[]while y:res.append(x//y)x,y=y,x%yreturn resdef continued_fraction(sub_res):numerator,denominator=1,0for i in sub_res[::-1]:      #從sublist的后面往前循環denominator,numerator=numerator,i*numerator+denominatorreturn denominator,numerator   #得到漸進分數的分母和分子,并返回#求解每個漸進分數
def sub_fraction(x,y):res=transform(x,y)res=list(map(continued_fraction,(res[0:i] for i in range(1,len(res)))))  #將連分數的結果逐一截取以求漸進分數return resdef get_pq(a,b,c):      #由p+q和pq的值通過維達定理來求解p和qpar=gmpy2.isqrt(b*b-4*a*c)   #由上述可得,開根號一定是整數,因為有解x1,x2=(-b+par)//(2*a),(-b-par)//(2*a)return x1,x2def wienerAttack(e,n):for (d,k) in sub_fraction(e,n):  #用一個for循環來注意試探e/n的連續函數的漸進分數,直到找到一個滿足條件的漸進分數if k==0:                     #可能會出現連分數的第一個為0的情況,排除continueif (e*d-1)%k!=0:             #ed=1 (mod φ(n)) 因此如果找到了d的話,(ed-1)會整除φ(n),也就是存在k使得(e*d-1)//k=φ(n)continuephi=(e*d-1)//k               #這個結果就是 φ(n)px,qy=get_pq(1,n-phi+1,n)if px*qy==n:p,q=abs(int(px)),abs(int(qy))     #可能會得到兩個負數,負負得正未嘗不會出現d=gmpy2.invert(e,(p-1)*(q-1))     #求ed=1 (mod  φ(n))的結果,也就是e關于 φ(n)的乘法逆元dreturn dprint("該方法不適用")n= 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471
e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085d=wienerAttack(e,n)
print("d=",d)d=8920758995414587152829426558580025657357328745839747693739591820283538307445

求出d后直接加入原代碼中,發現有漏洞?所以不能直接加入,需要優化,在flag那一行的hex(d)改為hex(d).encode()

N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471
e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085
d=8920758995414587152829426558580025657357328745839747693739591820283538307445
import hashlib
flag = "flag{" + hashlib.md5(hex(d).encode()).hexdigest() + "}"
print(flag)

?運行后得到#flag{8159e6c4abdd3b94ce461ed9a1a24017},但是是錯的,看別人的wp,需要用python2運行,得到flag

buu-RSA2

?下載附件,得到題目可以看到是e,n,dp,c

在網上找模板

import gmpy2 as gpe = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751 
for x in range(1, e):if(e*dp%x==1):p=(e*dp-1)//x+1if(n%p!=0):continueq=n//pphin=(p-1)*(q-1)d=gp.invert(e, phin)m=gp.powmod(c, d, n)if(len(hex(m)[2:])%2==1):continueprint('--------------')print(m)print(hex(m)[2:])print(bytes.fromhex(hex(m)[2:]))

?

buu-[AFCTF2018]Morse

點擊

附件,如題是摩斯密碼,我們用在線工具解密摩斯密碼轉換器 - 孟坤工具箱網頁版就這么簡單的提交發現錯誤,再仔細看看此時的明文,是數字與字母,字母不超f組成,想到了hex的特征,將這個明文轉為字符得到了真正的flag字符串HEX轉換

花指令

是什么

花指令實質就是一串垃圾指令,主要用于干擾靜態分析的難度防止反編譯器進行反編譯,并不影響程序的正常邏輯,在CTF中花指令的作用主要用于防止靜態分析程序,花指令也可以被用在病毒或木馬上,通過加入花指令來改變程序的特征碼從而躲避殺軟的掃描達到免殺的目的,花指令一般被分為兩類,可執行花指令與不可執行花指令,不管執不執行都不會影響程序正常運行。

re

nssctf-[GFCTF 2021]wordy【涉及花指令】

附件下載后查得無殼,用ida打開,然后沒有在函數窗口并未看到main,所以查看一下其他的。main函數實際上是被調用的,通過查看start函數可以發現start函數調用了_libc_start_main函數,_libc_start_main里面調用了main函數。其余部分本題無需考慮。雙擊后進入main函數,便看到了一個紅色的代碼,有個jmp,是花指令,我們需要將花指令剔除,需要用到Pacth功能。可以選擇手動更改,先看jmp先前的代碼的值patch

改前:改后:對比即可知道花指令jmp的值是EB,手動更改即是將花指令jmp的每一個的values第一個值改為90

也可以使用IDA python跑腳本

start = 0x1144
end = 0x3100for i in range(start, end):if get_wide_byte(i) == 0xEB and get_wide_byte(i + 1) == 0xFF and get_wide_byte(i + 2) == 0xC0:patch_byte(i, 0x90)

start即是jmp開始的位置 end要找到這jmp的結尾的位置

在腳本無腦 patch 后,發現部分 call 指令出現問題。也就是說有部分 0xeb 是不能被 patch 的。也就是 0xe8 之后四字節內的 0xeb 不能patch。所以我們需要找一下不同,從而限制patch操作,即需要代碼中的if條件進行判斷。跑成功后看了一大堆的安慰詞,終于在最后面看到了flag,改格式:NSSCTF{u_are2wordy}

web

buu-[ACTF2020 新生賽]Upload

看到了沒有任何上傳的頁面,四處劃動鼠標,成功點亮燈泡,得以上傳的位置然后我們看一下源代碼,用ctrl+U進入,再雙擊此處可以得知這個對文件名有限制,所以我們上傳后綴為jpg的一句話木馬,抓包后改為php,但是不成功改為html,上傳成功,再測試蟻劍,顯示返回數據為空

在Apache中,以下后綴名都會被服務器解析為PHP文件:

phtml
php
php3
php4
php5
inc
//下面是對上面的大小寫混寫繞過
pHtml
pHp
pHp3
pHp4
pHp5
iNc

再改為phtml,上傳成功再蟻劍測試連接,成功。然后保存后點擊進去在根目錄查看到了flag文件找到了flag

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

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

相關文章

PMBOK第7版整體架構全面詳解

1. 引言 7月1日對于項目管理從業者和研究者而言,是個非凡意義的一個時間,這一天,翹首以待的《 項 目管理知識體系指南 》(PMBOK)第七版終于發布了。 總體而言,PMBOK第七版集百家之所長,成一…

C++:類與對象,定義類和構造函數

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //如何讓定義一個類 // 封裝 // 1、將數據和方法定義到一起。 // 2、把想給你看的數據給你看&#xff0c;不想給你看的封裝起來。 通過訪問限定符來實現 class Stack { public: //1.成…

nginx 部署前端vue項目

?? 主頁&#xff1a; ?? 感謝各位大佬 點贊?? 收藏 留言?? 加關注! ?? 收錄于專欄&#xff1a;前端工程師 文章目錄 一、??什么是nginx&#xff1f;二、??nginx 部署前端vue項目步驟 2.1 ??安裝nginx 2.1.1 ??windows環境安裝2.1.2 ??linux環境安裝 2.2 …

藍橋杯備考策略

備賽策略 (1-2周):基礎算法數據結構 (3-5周):動態規劃/貪心圖論 (6-8周):全真模擬查漏補缺 階段1:基礎鞏固(第1-2周) **目標:**掌握基礎數據結構和必考算法&#xff0c;熟悉藍橋杯題型。 學習內容: 數據結構:數組、字符串、棧、隊列、哈希表、二叉樹(遍歷與基本操作)。 基礎…

tmux和vim的基本操作

Tmux Tmux 的核心功能 多窗口和多面板&#xff1a; 在一個終端中創建多個窗口&#xff08;Windows&#xff09;&#xff0c;每個窗口可以運行不同的任務。 在每個窗口中&#xff0c;可以進一步分割成多個面板&#xff08;Panes&#xff09;&#xff0c;實現分屏操作。 會話…

Lineageos 22.1(Android 15) 開機向導制作

一、前言 開機向導原理其實就是將特定的category的Activity加入ComponentResolver&#xff0c;如下 <category android:name"android.intent.category.SETUP_WIZARD"/>然后我們開機啟動的時候&#xff0c;FallbackHome結束&#xff0c;然后啟動Launcher的時候…

【二分搜索 C/C++】洛谷 P1873 EKO / 砍樹

2025 - 02 - 19 - 第 55 篇 Author: 鄭龍浩 / 仟濹(CSND) 【二分搜索】 文章目錄 洛谷 P1873 EKO / 砍樹題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1 輸入輸出樣例 #2輸入 #2輸出 #2 說明/提示題目中的部分變量思路代碼 洛谷 P1873 EKO / 砍樹 題目描述 伐木工人…

DeepSeek系列模型發展:從LLM到V3、R1的技術突破與優化各階段的重要論文匯總(附下載地址)

DeepSeek 系列模型從最初的 LLM 版本發展到最新的 V3 和 R1 版本&#xff0c;在架構設計、訓練效率和推理能力方面不斷取得進步。以下是各版本按時間倒序的詳細信息&#xff1a; 1. DeepSeek-R1 發布時間&#xff1a;2025年1月 論文標題&#xff1a;DeepSeek-R1: Incentivizi…

HTTP SSE 實現

參考&#xff1a; SSE協議 SSE技術詳解&#xff1a;使用 HTTP 做服務端數據推送應用的技術 一句概擴 SSE可理解為&#xff1a;服務端和客戶端建立連接之后雙方均保持連接&#xff0c;但僅支持服務端向客戶端推送數據。推送完畢之后關閉連接&#xff0c;無狀態行。 下面是基于…

推薦一款AI大模型托管平臺-OpenWebUI

推薦一款AI大模型托管平臺-OpenWebUI 1. OpenWebUI 1. OpenWebUI什么? 官網地址&#xff1a;https://openwebui.com/ GitHub地址&#xff1a; https://github.com/open-webui/open-webui Open WebUI 是一個可擴展、功能豐富且用戶友好的自托管 AI 平臺&#xff0c;旨在完全離…

js中常用方法整理

數據類型 typeOf()Number&#xff08;&#xff09;parseInt()parseFloat()- * / %檢測數據類型轉換為數字轉換為整數類型轉換為浮點類型非加法的數字運算toString()Boolean()String()轉換為字符串&#xff0c;不能轉換undefined/null字符串拼接轉換為布爾類型轉換為字符串、所有…

java練習(33)

ps:題目來自力扣 最強回文子串 給你一個字符串 s&#xff0c;找到 s 中最長的 回文 子串。 class Solution {public String longestPalindrome(String s) {if (s null || s.length() < 1) {return "";}int start 0, end 0;for (int i 0; i < s.length();…

本地部署DeepSeek大模型

環境&#xff1a;nuc工控機器 x86架構 ubuntu20.04 1、瀏覽器打開Download Ollama on Linux&#xff0c;復制命令。 2.打開終端&#xff0c;輸入命令。 curl -fsSL https://ollama.com/install.sh | sh 等待安裝&#xff0c;安裝完成后&#xff0c;終端輸入 ollama&#xff…

Nginx 常用命令和部署詳解及案例示范

一、Nginx常用命令 1.1 啟動 Nginx 要啟動 Nginx 服務&#xff0c;可以使用以下命令&#xff1a; sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服務&#xff0c;可以使用以下命令&#xff1a; sudo systemctl stop nginx1.3 重啟 Nginx 在修改了 Nginx…

2025鴻蒙開發面試題匯總——通俗易懂

問題和通俗易懂的答案&#xff0c;覆蓋鴻蒙開發的核心知識點和實際場景&#xff0c;方便面試時快速評估候選人能力&#xff1a; 一、基礎概念&#xff08;必問&#xff09; 鴻蒙和安卓最大的區別是什么&#xff1f;舉個實際例子。 答案&#xff1a;鴻蒙是“分布式操作系統”&am…

Kotlin 優雅的接口實現

1. 日常遇到的冗余的接口方法實現 日常開發中&#xff0c;經常會要實現接口&#xff0c;但是很多場景中&#xff0c;只需要用到其中一兩個方法&#xff0c;例如 ActivityLifecycleCallbacks&#xff0c;它有很多個接口需要實現&#xff0c;但是很多時候我們只需要用到其中的一…

Java List 自定義對象排序 Java 8 及以上版本使用 Stream API

從 Java 8 開始&#xff0c;你可以使用 Stream API 對 List 進行排序&#xff0c;這種方式更加簡潔和靈活。 以下是一個示例代碼&#xff1a; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;// 自定…

【Spring詳解一】Spring整體架構和環境搭建

一、Spring整體架構和環境搭建 1.1 Spring的整體架構 Spring框架是一個分層架構&#xff0c;包含一系列功能要素&#xff0c;被分為大約20個模塊 Spring核心容器&#xff1a;包含Core、Bean、Context、Expression Language模塊 Core &#xff1a;其他組件的基本核心&#xff…

Linux內核讀寫鎖與讀寫信號量的區別及選用

在Linux內核中&#xff0c;讀寫鎖&#xff08;rwlock_t&#xff09;和讀寫信號量&#xff08;struct rw_semaphore&#xff09;是兩種不同的同步機制&#xff0c;適用于不同的場景。以下是它們的區別和選用建議&#xff1a; 核心區別 特性讀寫鎖 (rwlock_t)讀寫信號量 (struct…

用openresty和lua實現壁紙投票功能

背景 之前做了一個隨機壁紙接口&#xff0c;但是不知道大家喜歡對壁紙的喜好&#xff0c;所以干脆在實現一個投票功能&#xff0c;讓用戶給自己喜歡的壁紙進行投票。 原理說明 1.當訪問http://demo.com/vote/時&#xff0c;會從/home/jobs/webs/imgs及子目錄下獲取圖片列表&…