eval(cmd)與eval($cmd)的區(qū)別與聯(lián)系
這個(gè)問(wèn)題一直困擾我許久,今天終于解決清楚了
問(wèn)題1:eval的執(zhí)行是否需要雙引號(hào)包括:
先看三個(gè)命令:
A:<?php eval(system(dir))?> B:<?php $cmd="system(dir)"; eval($cmd)?>
A結(jié)果:
B結(jié)果:
報(bào)錯(cuò)
思考:
同樣是一個(gè)命令,為什么會(huì)出現(xiàn)如此區(qū)別,詢問(wèn)了其他師傅得知:eval執(zhí)行的是變量的值的時(shí)候,該變量值需要閉合,也就是必須是一個(gè)完整的語(yǔ)句,需要用分號(hào)結(jié)尾。根據(jù)這個(gè)道原理我們改一下上面的命令看看:
<?php $cmd="system(dir);"; eval($cmd)?>
結(jié)果:
發(fā)現(xiàn)是可以執(zhí)行的。
后話:
關(guān)于這個(gè)點(diǎn),還需要補(bǔ)充一個(gè):
內(nèi)置函數(shù)在eval里面直接執(zhí)行時(shí)不需要加分號(hào),看兩個(gè)命令就知道了:
eval(system(dir)); eval(system(dir););
內(nèi)置函數(shù)不需要加分號(hào),其實(shí)我覺(jué)得加不加分號(hào)都一樣,因?yàn)榧恿朔痔?hào)就要加引號(hào),引號(hào)也帶有解析的意思
理解一下命令執(zhí)行中的閉合:
看代碼:
eval(system(dir)); eval(system(dir););
看看結(jié)果:
這里可以并且后面語(yǔ)句是不影響解析的
<?php eval("system(dir);?>xyusaiqeqcyuqqwdnoqcq"); ?>
我們這里都是不影響的,為什么?
如果我們是簡(jiǎn)單的閉合eval這個(gè)命令
那我們的playload應(yīng)該是:
<?php eval("system(dir));?>xyusaiqeqcyuqqwdnoqcq"); ?> 上面的代碼我錯(cuò)誤的理解成: <?php eval("system(dir)");?> xyusaiqeqcyuqqwdnoqcq"); ?>
之前我錯(cuò)誤的以為是這樣的閉合的,但是后來(lái)發(fā)現(xiàn)我錯(cuò)了,直到在有一道題目中我發(fā)現(xiàn)這樣閉合不了,后面詢問(wèn)了一下其他師傅,得到答案:
eval()這個(gè)函數(shù)可以理解成我們是將eval(字符串)這里面的字符串放到了一個(gè)新的php里面去運(yùn)行,這個(gè)新的php本來(lái)就又 <?php 所以當(dāng)我們傳入 system(dir);?>dasdas的時(shí)候,?>就以及階段了php代碼
學(xué)習(xí)了~
相關(guān)文章
解決控件遮擋問(wèn)題:關(guān)于有窗口元素和無(wú)窗口元素
解決控件遮擋問(wèn)題:關(guān)于有窗口元素和無(wú)窗口元素...2007-01-01php生成復(fù)雜驗(yàn)證碼(傾斜,正弦干擾線,黏貼,旋轉(zhuǎn))
現(xiàn)在好多網(wǎng)站使用的驗(yàn)證碼非常容易被軟件自動(dòng)識(shí)別到,本文介紹了一種PHP生成驗(yàn)證碼并加入傾斜,弦干擾線,黏貼,旋轉(zhuǎn)等效果2018-03-03php計(jì)數(shù)器的設(shè)計(jì)與實(shí)現(xiàn)
php計(jì)數(shù)器的設(shè)計(jì)與實(shí)現(xiàn)...2006-07-07WinXP + Apache +PHP5 + MySQL + phpMyAdmin安裝全功略
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安裝全功略...2006-07-07Win2003服務(wù)器安全加固設(shè)置--進(jìn)一步提高服務(wù)器安全性
Win2003服務(wù)器安全加固設(shè)置--進(jìn)一步提高服務(wù)器安全性...2007-05-05微信開(kāi)發(fā)之php表單微信中自動(dòng)提交兩次問(wèn)題解決辦法
這篇文章主要介紹了微信開(kāi)發(fā)之php表單微信中自動(dòng)提交兩次問(wèn)題解決辦法的相關(guān)資料,這里提供了解決辦法及實(shí)例代碼,需要的朋友可以參考下2017-01-01jQuery EasyUI API 中文文檔 - DateBox日期框
jQuery EasyUI API 中文文檔 - DateBox日期框,需要的朋友可以參考下。2011-10-10