PHP 函数漏洞总结】的更多相关文章

题目描述 一个网页,不妨设URL为http://haha.com,打开之后是这样的 if (isset($_GET['a']) and isset($_GET['b'])) { if ($_GET['a'] != $_GET['b']) { if (md5($_GET['a']) === md5($_GET['b'])) { echo ('Flag: '.$flag); }else { echo 'Wrong.'; } } } 根据这段代码,可以看出: 使用GET方式提交参数,可以直接在URL里…
1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进行比较,它把每一个以"0E"开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以"0E"开头的,那么PHP将会认为他们相同,都是0. 常见的payload有 0x01 md5(str) QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387…
通过get得到三个值,v1,v2,v3. if第一层判断,v1和v2得到的值不一样,但是对它们进行md5加密后的值得相等. if第二层判断,v3得到的值得和$flag的值相等,满足这两个条件输出flag. 一 先解决第一层,php的MD5函数漏洞: ①通过== 或者 !=比较两个哈希字符串的时候,如果哈希字符串都以0E开头,则会判断相等. ②MD5不能比较数组,比如v1[]=1,v2[]=2,MD5也判断相等,实质上都判断为 null. 所以绕过方法/?v1[]=1&v2[]=2或者找些md5加…
<?php if (isset ($_GET['password'])) { if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE) { echo '<p>You password must be alphanumeric</p>'; } else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999…
strcmp函数漏洞 适用5.3版本以前的php 函数作用:字符串比较 要求传入字符串.如果传入非字符串呢? 结果函数报错!但是函数返回“0”  . 虽然报错了但函数的判断却是“相等” 如何传入非字符串?答案是传入数组 将变量的结尾加上“[ ]”  将其构造为数组. 例子: <?php $flag = "flag{xxxxx}"; if (isset($_GET['a'])) { if (strcmp($_GET['a'], $flag) == 0) die('Flag: '.$…
php sprintf函数漏洞 0x01 了解sprintf()函数 1,sprintf(),函数是php中的函数 2,作用是将格式化字符串写入变量中 3,函数形式为sprintf(format,arg1,arg2,arg++) 参数说明: 参数 描述 format 必需.规定字符串以及如何格式化其中的变量. 可能的格式值: %% - 返回一个百分号 % %b - 二进制数 %c - ASCII 值对应的字符 %d - 包含正负号的十进制数(负数.0.正数) %e - 使用小写的科学计数法(例如…
1.ereg — 正则表达式匹配 此函数遇 %00 截断. <?php $a = $_GET['pwd']; var_dump(ereg ("^[0-9]+$", $a)); ?> 访问:http://localhost/index.php?pwd=123%00abc 2.sha1 — 计算字符串的 sha1 散列值 参数要求是 string,传入数组则返回 NULL. var_dump(sha1(array(1,2))); //NULL…
0x01: 背景:php在处理哈希值时,用!=和==来比较的时候,如果哈希字符串以0E开头的时候,哈希值会默认为0,所以两个不同的字符串经过md5加密成哈希值,如果哈希值开头是0E的话,会默认成相等. 2.当MD5遇到数组的话,会返回NULL,NULL=NULL的时候,直接相等了 0x02: copy了一些其他大佬收藏的pyload QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a sha1(str) sha1('…
简介 PHP函数的安全特性-is_numerice() 函数 简介 PHP is_numeric() 函数 is_numeric() 函数用于检测变量是否为数字或数字字符串. 语法: bool is_numeric ( mixed $var ) $var:要检测的变量. 返回值: 如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE. 函数正常使用测试代码: <?php $var_name1=678; $var_name2="a678"; $var_name3=…
今天大哥丢了一道题过来. <?php $str = intval($_GET['id']); $reg = preg_match('/\d/is', $_GET['id']); //有0-9的数字 和.在内的符号 if(!is_numeric($_GET['id']) and $reg !== 1 and $str === 1){ echo 'Flag'; }else{ echo "<img src='./1.jpg'>"; } ?>本来自信的以为是阶段或者十六…