// http://127.0.0.1/index.php?_CONFIG=123 $_CONFIG['extraSecure'] = true; foreach(array('_GET','_POST') as $method) { foreach($$method as $key=>$value) { // $key == _CONFIG // $$key == $_CONFIG // 这个函数会把 $_CON
post的可以通过伪协议来得到真正的变量名,php://input php读取文件或者获取文件的特性 先说一下php底层对于处理获取文件数据流是用的2个不同的方法,所以导致了readfile("/e/../../etc/passwd")可以成功,而is_file("/e/../../etc/passwd")为false 然后就是php的伪协议了:php://stdin,php://stdout,ph...
1. 通过URL传递值:可以在URL中使用查询字符串的形式传递参数,例如 `http://example.com/index.php?param1=value1¶m2=value2`。在PHP中,可以使用`$_GET`数组来获取传递过来的值,例如 `$_GET[‘param1’]` 和 `$_GET[‘param2’]` 就可以获取到相应的值。 2. 使用表单传递值:可以创建一个包含输入...
利用php中的md5()函数漏洞和strcmp()函数漏洞。PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会 认为他们相同,都是0。同时MD5不能处理数组,有时也可以用数组绕过。...
php://filter是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 同时我也借此机会学到了文件读取的相关知识。 include“test.php”php文件包含,在执行流中插入写在其他文件中的有用的代码。读取的时候也是数据流形式,因此可以使用php://filter进行过滤,返回值为0,1。
CTF的php内置函数bypass技巧 in_array in_array函数用来判断一个值是否在一组数组中 总共三个参数,如果最后一个type为true,则为严格类型校验 类似于=== 如果没有type=true则为弱类型匹配,此时存在类型强制转换导致绕过校验的风险 比如: 1 2 3 4 $whitelist= ["hit"];...
绕过其实也很简单,POST方式提交了参数,这个是可控的,所以尝试PHP伪协议来进行写入一句话,并且使用base64-decode去除死亡退出。 利用php://filter流的base64_decode函数特性去除死亡exit base64编码中只包含64个可打印字符,在解码的时候,遇到这64个之外的字符,就会略过 ...
<?php $a=(string)$_POST['a'];$b=(string)$_POST['b'];if($a!=$b&&md5($a)===md5($b)){echo'success!';} 由于强制类型转换,传入数组会得到’Array’,这里我们只能需要一个md5前不等,md5后相等的值。 方法:使用Fastcoll生成 详细可见这篇文章 ...
也就是说,我们将文件上传之后,即可用对应方法向网站提交代码并执行,这里使用 post 方法。虽然我们直接定义了自己的变量名h-t-m,但是@可以保证不会报错。于是我们完全可以通过这个文件直接连接至服务器。 由于只是 js 检查,为表示对检查的尊重,我们大可以嚣张一点,将文件名命名为木马.php。
1 index.php?file=php://input 2 POST: 3 <? phpinfo(); ?> php://filter 可以读取本地文件 index.php?file=php://filter/read=convert.base64-encode/resource=index.php 指定末尾文件,可以读到base64编码后的文件内容,ctf中常有题目可读文件源码。