$_POST // 获取 post 数据,是一个字典 $_GET // 获取 get 数据,是一个字典 $_COOKIE // 获取 cookie $_SESSION // 获取 session $_FILE // 获取上传的文件 $_REQUEST // 获取 $_GET,$_POST,$_COOKIE 中的数据 错误控制运算符 PHP 支持一个错误控制运算符:@。当将其放置在一个PHP 表达式之前...
可以在HTML表单中添加一个隐藏字段,并将其值设置为需要传递给PHP的值。然后,在PHP代码中可以使用$_POST超全局变量获取该隐藏字段的值。例如,可以在表单中添加以下代码来创建一个隐藏字段:``。在PHP代码中可以使用`$key = $_POST[‘key’];`获取该隐藏字段的值。 总结起来,在CTF中传递值给PHP可以通过URL参数、...
CTF PHP代码审计之常见Hash总结 -https://www.cnblogs.com/iAmSoScArEd/p/14825040.html我超怕的 一、MD4 1.1 $a=md4($a) 解决: url?a=0e251288019 url?a=0e898201062 url?a=0e001233333333333334557778889 二、MD5 2.1 $a!=$b && md5($a)==md5($b) 解决 url?a[]=1&b[]=2 或ab从以下值中...
post的可以通过伪协议来得到真正的变量名,php://input php读取文件或者获取文件的特性 先说一下php底层对于处理获取文件数据流是用的2个不同的方法,所以导致了readfile("/e/../../etc/passwd")可以成功,而is_file("/e/../../etc/passwd")为false 然后就是php的伪协议了:php://stdin,php://stdout,ph...
<?php $a=(string)$_POST['a'];$b=(string)$_POST['b'];if($a!=$b&&md5($a)===md5($b)){echo'success!';} 由于强制类型转换,传入数组会得到’Array’,这里我们只能需要一个md5前不等,md5后相等的值。 方法:使用Fastcoll生成 详细可见这篇文章 ...
CTF的php内置函数bypass技巧 in_array in_array函数用来判断一个值是否在一组数组中 总共三个参数,如果最后一个type为true,则为严格类型校验 类似于=== 如果没有type=true则为弱类型匹配,此时存在类型强制转换导致绕过校验的风险 比如: 1 2 3 4 $whitelist= ["hit"];...
<?phpinclude"flag.php";error_reporting(0);$what=$_POST['what'];if($what=='flag')echo$flag;highlight_file(__FILE__);?> 根据代码,我们知道需要用post方式进入网址 我用的是火狐浏览器,我们需要hackbar插件 QQ截图20181109205716.png 然后我们会得到flag ...
考点一:PHP比较运算符 ===在进行比较的时候,会先判断两种字符串的类型是否相等,再比较值是否相等。 考点二:在PHP强比较中变量a、b两个值不一样,要求两者md5值相同时的绕过方法。 考点三:PHP中md5函数处理数组类型会返回falsefalse的特性。 例题: if(isset($_POST['a'])andisset($_POST['b'])){if($_...
看上面php代码可知当读取文件的内容是thisis test时才显示flag,我们并不知道那个文件有这个内容,我们可以使用php://这个协议php://input可以得到原始的post数据,访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行,如下操作来绕过: 使用条件:
绕过其实也很简单,POST方式提交了参数,这个是可控的,所以尝试PHP伪协议来进行写入一句话,并且使用base64-decode去除死亡退出。 利用php://filter流的base64_decode函数特性去除死亡exit base64编码中只包含64个可打印字符,在解码的时候,遇到这64个之外的字符,就会略过 ...