if代码执行机制
这里我们总结if代码块中布尔值的多少对程序进程的影响if条件小括号内的情况if括号内为false毫无疑问,if代码块里面的代码不会继续运行,此时整个程序会跳过条件括号里为false的这个if代码块继续往下运行。 1234if (false) { echo "This will not be printed";}echo "This will be printed because the if condition was false"; 在上述代码中,因为 if 条件为 false,echo “This will not be printed”; 不会被执行,程序直接执行 echo “This will be printed because the if condition was false”。 if括号里为true当 if 括号内条件为 true 时,if 代码块内的代码会执行。但这并不意味着整个程序会不受影响地继续运行。取决于 if 代码块内的代码:如果 if 代码块内有 return、exit 或 die...
HCTF2018 WarmUp1代码审计:include分割符
HCTF2018 Warmup1 代码审计第一步:查看源码 一张大脸,先检查源码:发现: 直接访问这个文件,发现一堆代码,需要代码审计: 第二步,开始审计12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset($page) || !is_string($page)) { echo...
代码审计套路
代码审计的一些套路总结[buuctf] [HCTF 2018]WarmUp strpos/substr截取代码首先来看源码: 12345678<?phpfunction(&$_page){$_page = mb_substr( $_page, 0, mb_strpos($_page . '?', '?') ...
php超全局变量特性注解
php超全局变量特性注解 $_REQUEST1.它最大的特点就是,$_REQUEST超全局变量为一个复合变量,它可以接受来自于$_GET、$_POST 和 $_COOKIE 传递过来的值。2.它的设计初衷是为了方便开发者在处理用户输入时,无需关心数据是通过哪种方式提交的,都能统一获取。3.所以如下: 1echo $_REQUEST["file"]; 我们直接在url里面加上: 1/?file=xxx 就可以让$_REQUEST变量接收到传递的参数。 $_FILES 区分: 如: $file_name = $_FILES['upload_file']['name']; $temp_file =...
正则匹配注意点个人笔记
正则匹配个人易忽略点记录 标志/模式修正符多行修饰符(Multline)与($,^)这两个检查首尾的符号紧密相关,注意点:在默认情况下,它们是默认检查全局,即所有字符的开头和结尾,即使你使用了换行符号,它也不会对首位进行检查。例如表达式: /.at(.)?$/gm 表示小写字符a后跟小写字符t,末尾可选除换行符外任意字符 123"/.at(.)?$/" => The fat cat sat on the mat. 这里只匹配mat但是: 123"/.at(.)?$/gm" => The fat cat sat on the...
一句话木马简单例题web80
例题1234567891011<?phpif(isset($_GET['file'])){ $file = $_GET['file']; $file = str_replace("php", "???", $file); $file = str_replace("data", "???", $file); include($file);}else{ highlight_file(__FILE__);} 题目描述:这道题把协议也过滤,比如说php,data协议,所以我们可以使用一句话协议木马,比如: 1<?php...
命令执行:使用文件包含绕过
ctfshow web32读题和简单分析:123456789101112131415161718192021<?php/*# -*- coding: utf-8 -*-# @Author: h1xa# @Date: 2020-09-04 00:12:34# @Last Modified by: h1xa# @Last Modified time: 2020-09-04 00:56:31# @email: h1xa@ctfer.com# @link: https://ctfer.com*/error_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){ eval($c); } }else{ ...
命令执行绕过符号总结
命令执行绕过符号总结在命令执行这种题目中我们总会遇到正则过滤,不得不使用一些特殊符号来绕过,下面是常见的符号和对应的绕过方法: 空格:%20%09Linux知识拓展: $IFS(Internal Field Separator),在shell环境里面,这个东西叫做内部字段分隔f符,它可以被设置为很多默认的字符,比如空格,制表符,换行符等。 虽然它默认为空格,但是我们不可以在shell中直接用$IFS代表空格,我们需要用这些方法来设置: $IFS$1,我来解释一下:在 shell 脚本和命令行中,$1 通常表示传递给脚本或函数的第一个位置参数但是在内部字段分割符这个地方,它被用来调取内部字段分隔符的第一个字符,即空格,参数位置为$1的空格。所以我们在这里可以用$IFS$1来绕过空格。 换行符:%0a php分隔符号”“1.使用js代码来编辑php代码: 123<script language="php">@eval($_POST['cmd']);</script>
php随机数的解释
mt_rand()函数对mt_srand()函数的继承如图下: 123456789101112<?phpmt_srand(1);echo mt_rand(); // 输出一个随机数echo "<br>";echo mt_rand(); // 输出另一个随机数echo "<br>";echo mt_rand(); // 输出另一个随机数echo "<br>";echo mt_rand(); // 输出另一个随机数mt_srand(1);echo "<br>";echo mt_rand(); // 会输出与第一次使用 mt_srand(1) 后 mt_rand()...
php命令执行函数详解
首先辨析:system,passthru1.对于system和passthru函数. 共同点:1.都用来执行外部命令2.都会先把命令的执行结果直接输出到标准输出(例如,在网页上显示或者在命令行终端显示)。 不同点:1.system具有默认返回值,即会返回命令执行结果的最后一行的最后一个字符,2.对于执行命令的状态值,system函数返回的是0表示命令执行成功,其他值表示命令执行失败,3.并且system是必须要写作: 12system("ls -l",$return_var);echo "命令执行状态值为:...