国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

CTF中的PHP特性函數(shù)解析之中篇

瀏覽:219日期:2022-06-06 15:55:04
目錄
  • 前言
  • intval()
  • strpos()
  • sha1
    • 數(shù)組比較
    • 強(qiáng)類型
  • array_push()
    • 結(jié)語

      前言

      上篇文章給大家?guī)砹薖HP中最基本的特性,不知道大家學(xué)習(xí)的怎樣了,回顧上文,我們講了MD5強(qiáng)弱碰撞以及正則匹配的繞過,總體來看還是很簡單的,下面給大家?guī)硇碌腜HP特性講解,會(huì)稍微比上一篇難一些。

      intval()

      上一篇在最后時(shí)簡單介紹了一下這個(gè)函數(shù),我們看看官方是怎樣定義的:

      簡單來說就是讓輸入的數(shù)字變成整數(shù),下面我們舉個(gè)例子:

      echo intval(1145.14);     // 1145echo intval("114514");    // 114514

      可以發(fā)現(xiàn)只對有小數(shù)點(diǎn)的數(shù)字起作用,正常的整數(shù)還是照常輸出,那么它在CTF中是如何考察的呢,查看下面代碼:

      if($num==="1145"){die("no no no!");    }    if(intval($num,0)===1145){echo $flag;    }

      要我們強(qiáng)類型傳入的不能等于1145,但后面經(jīng)過intval函數(shù)又要等于1145,這不和前面的矛盾了,我們要怎樣做呢?

      這里介紹一下intval的特性,如果我們在函數(shù)里傳入字符串,那么該函數(shù)就會(huì)返回不是數(shù)字的字符之前的數(shù)字,也就是說我們傳入:

      sum=1145a

      intval就會(huì)判斷我們傳入的是1145,從而實(shí)現(xiàn)了繞過,還有另一種繞過方法:

      當(dāng)base為0時(shí),intval會(huì)自動(dòng)進(jìn)行進(jìn)制轉(zhuǎn)換,我們可以傳入1145的十六進(jìn)制形式來繞過。

      strpos()

      根據(jù)手冊可以看到,該函數(shù)以及與其類似的函數(shù),作用都是匹配第一個(gè)或者最后一個(gè)字符,根據(jù)該函數(shù)特性,題目會(huì)經(jīng)常圍繞它作為一個(gè)限制頭部的點(diǎn),比如上面那題可能會(huì)增加限制:

       if(!strpos($num, "0")){die("no no no!");

      因?yàn)榘诉M(jìn)制開頭通常為0,檢測到的話就不能通過進(jìn)制轉(zhuǎn)換來繞過了。

      sha1

      p>該函數(shù)的利用以及繞過方法類似于MD5函數(shù),都是運(yùn)用了PHP特性來做,這里簡單看一下:

      數(shù)組比較

      類似于MD5,在SHA1里我們也可以使用數(shù)組繞過,具體可以看下面例子:

      if(sha1($a)==sha1($b) && $a!=$b){  	echo $flag;}

      可以看到,也是一個(gè)弱比較,根據(jù)PHP特性sha1函數(shù)無法對數(shù)組進(jìn)行處理,,于是我們傳入數(shù)組來使結(jié)果為NULL:

      a[]=1b[]=2

      強(qiáng)類型

      與MD5相同,當(dāng)然也存在強(qiáng)類型比較,我們不能用數(shù)組來進(jìn)行繞過了:

      if(sha1($a)===sha1($b) && $a!=$b){  	echo $flag;}

      這里同樣有類似于MD5函數(shù)的解決方法:

      a=aaK1STf    //0e7665852665575620768827115962402601b=aaO8zKZF   //0e89257456677279068558073954252716165

      array_push()

      可以理解為向數(shù)組尾部插入?yún)?shù),我們看看是如何考察的:

      <?phphighlight_file(__FILE__);$allow = array();for ($i=36; $i < 0x36d; $i++) {     array_push($allow, rand(1,$i));}if(isset($_GET["n"]) && in_array($_GET["n"], $allow)){    file_put_contents($_GET["n"], $_POST["content"]);}?>

      可以看到題目先向數(shù)組里插入隨機(jī)數(shù),in_array()是搜索數(shù)組中是否存在指定的值,根據(jù)它的語法:

      type會(huì)判斷類型是否匹配,這就是我們利用的點(diǎn),因?yàn)閿?shù)組里數(shù)據(jù)為int型,根據(jù)PHP特性比較后字符串會(huì)轉(zhuǎn)成int型,也就是說我們傳入1.php也是沒有問題的,后面有個(gè)寫入文件操作,正好可以設(shè)置一句話木馬連接后門,或者進(jìn)行命令執(zhí)行:

      get:  n=1.phppost: content=&lt;?=`tac f*`;

      結(jié)語

      今天這篇文章可能有的地方不是很好理解,但總體來說還是很簡單的,PHP特性很多以至于只能挑出一些著名的來說,更多關(guān)于CTF PHP特性函數(shù)的資料請關(guān)注其它相關(guān)文章!

      標(biāo)簽: PHP
      主站蜘蛛池模板: 欧美成人亚洲综合精品欧美激情 | 美女扒开腿让男人桶爽免费动态图 | 毛片日韩 | 男人的亚洲天堂 | 日韩在线观看视频网站 | 日韩特黄特色大片免费视频 | 亚洲haose在线观看 | 国模午夜写真福利视频在线 | 美国毛片视频 | 色综合久久久久久888 | 亚洲美女福利视频在线 | 日本精品一在线观看视频 | 欧美成人高清手机在线视频 | 国产精品无码久久综合网 | 成人免费夜片在线观看 | 亚洲欧美日韩在线线精品 | 福利视频美女国产精品 | 久草视频在线免费 | 免费观看性欧美一级 | 在线日韩中文字幕 | 成人免费毛片网站 | 国产在线综合视频 | 视频三区精品中文字幕 | 999热成人精品国产免 | 免费国产a理论片 | 在线观看国产一区二区三区 | 精品视频在线观看 | 欧美成人h精品网站 | 亚洲最新视频在线观看 | 亚洲精品第一国产综合野 | 亚洲精品国产一区二区三区在 | 欧美成人高清免费大片观看 | 成人18免费观看的软件 | 成年女人免费又黄又爽视频 | 国产欧美日韩图片一区二区 | 国产成人亚洲精品2020 | 九九精品在线观看 | 1204国产成人精品视频 | 99爱精品视频 | 国产综合精品久久久久成人影 | 精品亚洲福利一区二区 |