NSS [NSSCTF 2022 Spring Recruit]babyphp

NSS [NSSCTF 2022 Spring Recruit]babyphp

考点:PHP特性

开局源码直接裸奔

image-20230714164403803

<?php
highlight_file(__FILE__);
include_once('flag.php');

if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a'])){
   
    if(isset($_POST['b1'])&&$_POST['b2']){
   
        if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2'])){
   
            if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2'])){
   
                echo $flag;
            }else{
   
                echo "yee";
            }
        }else{
   
            echo "nop";
        }
    }else{
   
        echo "go on";
    }
}else{
   
    echo "let's get some php";
}
?>

粗略一看,四个if判断条件,全部满足就给我们flag。


首先是第一个if

if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a']))

要满足POST提交一个a,并且a不包括数字0-9,同时a经过intval()函数之后值不为0。

这里考察preg_match()函数和intval()函数的特性,采用数组绕过。

a[]=666


然后是第二个if

if(isset($_POST['b1'])&&$_POST['b2'])

要满足POST提交的b1存在同时POST提交的b2不等于0。


然后是第三个if

if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2']))

要满足POST提交的b1和b2不相等,并且md5强相等。

结合第二个if,我们还是可以使用数组绕过,b1[]和b2[]不相等就行了,是数组的话md5值都是0。

b1[]=6&b2[]=17


最后是第四个if

if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2']))

要满足POST提交的c1和c2不相等,并且都是字符串,同时md5弱相等。

那么数组就被ban了。因为是若比较(==),所以我们可以0e绕过。(md5的值都是0e开头)

c1=s214587387a&c2=s155964671a


最后payload:

a[]=666&b1[]=6&b2[]=17&c1=s214587387a&c2=s155964671a           //POST

image-20230714165553334

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-09 14:30:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-09 14:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-09 14:30:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-09 14:30:04       20 阅读

热门阅读

  1. DPDK系列之三十八网卡优化

    2023-12-09 14:30:04       33 阅读
  2. 数据结构和算法专题---7、负载均衡算法与应用

    2023-12-09 14:30:04       46 阅读
  3. 什么是git pr

    2023-12-09 14:30:04       31 阅读
  4. 浅谈低代码

    2023-12-09 14:30:04       42 阅读
  5. yaml工作常用语法总结

    2023-12-09 14:30:04       33 阅读
  6. yarn和npm的区别

    2023-12-09 14:30:04       48 阅读
  7. Mac系统升级node.js版本和npm版本

    2023-12-09 14:30:04       42 阅读
  8. 2-Spring

    2-Spring

    2023-12-09 14:30:04      40 阅读
  9. 54.Go类型转换库cast

    2023-12-09 14:30:04       42 阅读
  10. Pytorch当中nn.Identity()层的作用

    2023-12-09 14:30:04       30 阅读