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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

easyphp(xctf)

發布時間:2023/12/20 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 easyphp(xctf) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?php highlight_file(__FILE__); $key1 = 0; $key2 = 0;$a = $_GET['a']; $b = $_GET['b'];if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){if(isset($b) && '8b184b' === substr(md5($b),-6,6)){$key1 = 1;}else{die("Emmm...再想想");}}else{die("Emmm..."); }$c=(array)json_decode(@$_GET['c']); if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){$d = array_search("DGGJ", $c["n"]);$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;}$key2 = 1;}else{die("no hack");} }else{die("no"); }if($key1 && $key2){include "Hgfks.php";echo "You're right"."\n";echo $flag; }?>

只有當$key1和$key2都=1時,才會顯示falg。為了讓它們都等于1,一共需要對三個參數進行繞過

參數a

isset($a) && intval($a) > 6000000 && strlen($a) <= 3

判斷參數是否為空,并且傳入的數據長度不能超過3,值要大于6000000。

可以使用科學計數法來繞過? 1e3=100

參數b?

isset($b) && '8b184b' === substr(md5($b),-6,6)

參數b傳入的數據被MD5加密后的最后6位必須是8b184b

可以爆破出來,php代碼

<?php $a=0; while(1) {if(substr(md5($a),-6,6)==='8b184b'){echo $a;break;}$a++; } ?>結果是: 53724

?參數c

$c=(array)json_decode(@$_GET['c']); if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){$d = array_search("DGGJ", $c["n"]);$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;

json_decode()接受一個JSON格式的字符串并且把它轉換為PHP變量?,當該參數$assoc為TRUE時,將返回array,否則返回object。

?傳入的c必須有m,n兩個鍵名,m的鍵值不是數字,但是要大于2022。

php中,當字符與數字進行比較時,字符會被轉化為數字,?可以構造? "m":2023a。

n的鍵值是一個數組,數組的長度不能超過2,并且is_array($c["n"][0]) 告訴我們必須是一個二維數組

"n":[[1,2],[1,2]]? ?->? $c['n']=[[1,2],[1,2]] , $c['n'][0]=[1,2]

$d = array_search("DGGJ", $c["n"]);$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;

array_search() 在數組中搜索要查詢的鍵值,并返回它的鍵名(沒有鍵名,返回下標)

首先$d不能的flase,那么array_search() 能夠搜索帶"DGGJ",即數組中有DGGJ

然后在foreach遍歷循環中,又不能讓$val="DGGJ",即數組中不能又DGGJ

兩者互相矛盾

可以從array_search()這里來繞過,array_search()在搜索中,實際上是一個比較的過程

php中數字和字符串進行比較的時后,字符串會被傳換位數字,所以在與數字比較的時候,DGGJ會被轉換位0,只需要數組中有0即可。

成功返回了0對應的下標。

所以c={"m":2023a,"n"=[[1,2],0]}

?

總結

以上是生活随笔為你收集整理的easyphp(xctf)的全部內容,希望文章能夠幫你解決所遇到的問題。

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