日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

I春秋——web Write up(二)

發布時間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I春秋——web Write up(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:最近都沒有更新過,感覺博客快荒廢了,得更新了[]( ̄▽ ̄)*,這次總結一下做的一些web題。

一、Not Found


打開頁面便是404,但是下面有一個404.php,訪問一下

除下有出題人的haha,沒有其他信息了,御劍掃一下

打開頁面,發現也沒有有用的信息

重新回到原點,看看是不是漏掉些什么,看了出題人的提示

加上一個奇怪的參數

是不是和HTTP請求方式有關,百度查下

HTTP請求的方法:
HTTP/1.1協議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的操作方式
1、OPTIONS
返回服務器針對特定資源所支持的HTTP請求方法,也可以利用向web服務器發送‘*’的請求來測試服務器的功能性
2、HEAD
向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小消息頭中的元信息。
3、GET
向特定的資源發出請求。它本質就是發送一個請求來取得服務器上的某一資源。資源通過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。
4、POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
5、PUT
向指定資源位置上傳其最新內容
6、DELETE
請求服務器刪除Request-URL所標識的資源
7、TRACE
回顯服務器收到的請求,主要用于測試或診斷
8、CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。

這么多請求方式,挨個試下
CONNECT請求方式,發現是Apache/2.4.7 (Ubuntu) Server

OPTIONS請求方式,發現有不同的地方

訪問1.php,繼續使用OPTIONS請求方式

沒有有用的信息,查詢下是否存在flag.php

到這里感覺又沒思路了,看了大師傅的博客,發現Apache/2.4.7 (Ubuntu) Server的信息是有用的,Appache搭建的網站中,根目錄下會存在.htaccess文件

簡單了解一下.htaccess文件

htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。

訪問.htaccess文件

訪問8d829d8568e46455104209db5cd9228d.html,發現flag

EXEC


一只貓和no sign,提示說了執行、執行、執行,應該是命令執行這一類的,抓包看看是否有線索

發現vim,之前剛做過一個敏感信息泄露,里面就涉及到vim,這樣就簡單介紹一下

非正常關閉vim編輯器時(比如直接關閉終端或者電腦斷電),會生成一個.swp文件,這個文件是一個臨時交換文件,用來備份緩沖區中的內容,會導致程序的源碼泄漏。

/.index.php.swp

發現確實有源碼被下載了,但是是swp文件,我們需要恢復一下

vi -r 文件名

得到源碼

接下來就來審計代碼,先觀察check函數,函數包含的代碼很好理解,$number == '11259375',常規的數字肯定是繞不過去的,我們可以將number轉換成十六進制,這樣繞過check函數
簡單解釋下:

//11259375的十六進制為0xabcdef $digit = ord($number{$i});//如果i=0 $digit = a //a的ascll碼肯定大于9,所以可以繞過

接下來看下面的代碼,發現

setcookie('auth','tcp tunnel is forbidden!');

這句話的意思說明TCP被禁止,簡單了解一下TCP

傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,由IETF的RFC 793 [1] 定義

這個跟我們做的題有什么關系,看了大師傅的博客,TCP被禁止不能用curl,那再來了解一下curl

cURL是一個利用URL語法在命令行下工作的文件傳輸工具,1997年首次發行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱cURL為下載工具。cURL還包含了用于程序開發的libcurl。

POST傳輸cmd命令,執行后也沒有回顯,之前的源碼中提示了flag所在的文件名,既然禁用了curl,那就用nc命令把flag文件下過來


然后在服務器端運行即可得出flag

nc -u -l -p 20000

(由于我沒有一臺公網能訪問的服務器,所以沒做這一步,但是方法沒有錯)
參考博客:
nc命令
curl命令
大師傅博客
vim源碼泄露

Login


一個簡易的登陸框,一開始以為是SQL注入,試了幾遍看了源碼,發現有賬號和密碼

登陸進去

一開始以為顏文字解密,結果解不開,那就抓包來看看有什么線索沒

一開始真的沒觀察到,看了大師傅的博客才發現show這個參數存在貓膩(show-顯示,0代表false,1代表true)

當show值為1時,出現了源碼

將源碼復制下來,審計代碼(注釋是自己加的)

class db這一段就是檢測和執行SQL查詢,最重要的是下面這段代碼

if(isset($requset['token'])){$login = unserialize(gzuncompress(base64_decode($requset['token'])));$db = new db();//base64_decode — 對使用 MIME base64 編碼的數據進行解碼$row = $db->select('user=\''.mysql_real_escape_string($login['user']).'\'');//php gzcompress() 和gzuncompress()函數實現字符串壓縮if($login['user'] === 'ichunqiu')//mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符{echo $flag;}else if($row['pass'] !== $login['pass']){echo 'unserialize injection!!';}else{echo "(╯‵□′)╯︵┴─┴ ";}}else{header('Location: index.php?error=1');}

只要滿足

if($login['user'] === 'ichunqiu')

即可得到flag
這里就涉及到php壓縮gzcompress和解壓gzuncompress字符串的方法

php壓縮gzcompress和解壓gzuncompress字符串的方法壓縮數據base64_encode(gzcompress(serialize($data)))解壓數據unserialize(gzuncompress(base64_decode($search_cache['data'])))

那思路就很明顯了,題中是解壓數據,那我們只需將ichunqiu壓縮然后傳遞即可

然后寫一個簡單的php腳本跑一下

<?php $login = array('user'=>'ichunqiu'); $a = base64_encode(gzcompress(serialize($login))); echo $a ?>


源碼中有一段代碼

$requset = array_merge($_GET, $_POST, $_SESSION, $_COOKIE); //array_merge() 函數把一個或多個數組合并為一個數組

得到token值后傳給cookie即可得出flag

總結:這次學到很多知識無論是HTTP請求方式,還是源碼泄露等,這次就先總結道這里,下次繼續總結!!

總結

以上是生活随笔為你收集整理的I春秋——web Write up(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。