[南邮OJ](Web)pass check


题目链接:

pass check 300
核心源码

<?php
    $pass=@$_POST['pass'];
    $pass1=***********;//被隐藏起来的密码
    if (isset($pass)) {
        if (@!strcmp($pass,$pass1)) {
            echo "flag:nctf{*}";
        } else {
            echo "the pass is wrong!";
        }
    } else {
        echo "please input pass!";
    }
?>

题目链接:tip:strcmp(array,string)=null=0


分析:
打开网址如下 :

Paste_Image.png

题目中提供了题目PHP的源码 , 对PHP的源码进行分析 :

<?php
    $pass=@$_POST['pass']; // 获取POST参数pass
    $pass1=***********;//被隐藏起来的密码
    if (isset($pass)) {
        if (@!strcmp($pass,$pass1)) { // 利用strcmp函数对post参数和php中设置的pass1这个字符串进行比对
            echo "flag:nctf{*}";
        } else {
            echo "the pass is wrong!";
        }
    } else {
        echo "please input pass!";
    }
?>

所以我们要做的就是 : 需要让 @!strcmp($pass,$pass1 这个条件成立 .
想到使用php的弱类型漏洞 : (查询php的strcmp函数的API)

Paste_Image.png

又通过百度得到了一篇关于php弱类型漏洞的文章 , 其中详细地测试了strcmp这个函数在不同类型的参数的情况下的返回值 :

Paste_Image.png

因此尝试通过POST一个数组类型的变量pass来绕过检查 : (使用到了Chrome的Postman插件)

Paste_Image.png

干货 :

Paste_Image.png
Paste_Image.png
Paste_Image.png

答案:
nctf{strcmp_is_n0t_3afe}


知识点:

  1. php弱类型相关文章
  2. 浅谈php弱类型安全
  3. PHP 松散类型比较表
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,839评论 25 709
  • 阅读后我们发现要找到flag就要找到和‘QNKCDZO’md5加密后相同的字符串。显然“碰撞”找对应字符串是几乎不...
    Sund4y阅读 4,392评论 0 0
  • 我把这个发在了朋友圈,然而并没有人get到我的点。不开心😔 # 阅后即焚 # 在UCLA从Royce Hall往南...
    waitbutwhy阅读 1,163评论 0 1
  • 作者:枫凌 你的爱 跟海一样 一浪接着一浪 爱意绵绵地来 深情款款 小心轻柔 拂过那海岸 爱得不留痕迹 时而来得急...
    惜君2017阅读 1,352评论 0 0
  • 我有一个学习列表,里面列着很多待办事项:要看的书、要温习的笔记等。 一开始,还会坚持着看书、写笔记,过了几天,就再...
    叶子侠阅读 1,560评论 0 0