搜索

查看: 3075|回复: 11

[PHP] CTF中的PHP特性函数解析之上篇

[复制链接]
发表于 2023-5-4 17:04:21 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:04:21 3075 11 看全部
目录
  • 前言
  • MD5强弱碰撞
  • 弱类型比较
  • 强类型比较
  • 强碰撞
  • preg_match()
  • 结语
    前言
    对于PHP大家一定不陌生,但你知道PHP在CTF中是如何考察的吗,本文给大家带来的是通过PHP特性来进行CTF比赛中解题出题的知识,会介绍一下CTF中常见的php特性以及围绕该知识点的相关案例,因为内容过多这里分成上中下三篇来讲,下面我们展开来讲。

    MD5强弱碰撞

    202322108343401.jpg

    202322108343401.jpg


    对于MD5加密大家一定很熟悉,在PHP里同样存在函数MD5,该函数可以将指定的字符串通过哈希函数转为复杂的加密字符串。在CTF中有着关于MD5的最基本的知识,即强/弱类型比较。

    弱类型比较
    观察以下代码:
    if(md5($_GET['a'])==md5($_GET['b']))
    echo $xino;
    可以看到比较时有两个等号,我们要怎样让他们相等呢?根据php弱类型比较特性,当两个等于号时,会将变量转化为同类型,那么我们可以思考,如果把传入的数据改成md5加密后都为开头0e的字符串是不是就可以绕过了,因为这样会被认为是科学计数法,不管加什么都永远是0,我们也就绕过了,这里举几个字符串md5加密后都为0e的:
    NWWKITQ:0e763082070976038347657360817689
    NOOPCJF:0e818888003657176127862245791911
    s878926199a:0e545993274517709034328855841020
    s1091221200a:0e940624217856561557816327384675

    强类型比较
    观察下面代码:
    if (md5($_POST['a']) === md5($_POST['b']))
    echo xino;
    如果我们等号变成三个还可以用上面方法绕过吗?答案是否定的,因为三个等号在PHP里意味着强类型比较,上面的方法因为0e后面数据不同便不可行了,于是这里可以用数组来绕过,因为PHP特性允许接受数组,而数组在MD5加密后为NULL,于是借助这个特性可以进行绕过。
    我们可以传入下面的PAYLOAD绕过:
    a[]=a&b[]=b

    强碰撞
    难度进一步升级,如果我们要面对的是以下代码呢:
    $a = (string)$_GET['a'];
    $b = (string)$_GET['b'];
    if (md5($a) === md5($b)) {
    die('OK');
    }
    因为强制类型转换的原因,我们不能像上面一样传入数组了,于是需要进行MD5强碰撞,及内容不同而MD5值要相同,这就很难办了,但是我们可以用工具生成,这里给大家举一个可行的例子:
    a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

    preg_match()

    202322108343402.jpg

    202322108343402.jpg


    这是一个正则表达式函数,简单来说会对我们设置的数据进行匹配,比如:

    因为我们用/i设置了大小写不敏感,所以可以找到匹配字符串,所以会返回查询到的字符串,下面我们看看如何绕过。

    其中intval的作用是取整,可以看到正则过滤了数字,但由于PHP特性,该函数只能处理字符串,于是我们可以传入数组进行绕过:
    ?num[]=1
    提交后成功echo出了flag,绕过成功。

    结语
    作为PHP特性总结的第一篇,介绍了一下最简单的特性函数以及绕过方法,后面还会给大家带来更多的PHP特性知识,希望大家能喜欢,更多关于CTF PHP特性函数的资料请关注知鸟论坛其它相关文章!
  • 知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 16:53:01 | 显示全部楼层
    我的苦恼冉 2023-6-28 16:53:01 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 22:45:31 | 显示全部楼层
    风吹吹蛋蛋疼风w 2023-6-28 22:45:31 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 23:24:50 | 显示全部楼层
    冀苍鸾 2023-6-28 23:24:50 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 23:53:11 | 显示全部楼层
    无人岛屿颈 2023-6-28 23:53:11 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 01:19:53 | 显示全部楼层
    dxf17 2023-6-29 01:19:53 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 18:57:38 | 显示全部楼层
    风来时狂放 2023-6-29 18:57:38 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 19:16:39 | 显示全部楼层
    井底燕雀傥 2023-6-29 19:16:39 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 10:26:01 | 显示全部楼层
    123456868 2023-6-30 10:26:01 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 12:33:19 | 显示全部楼层
    掌舵的鱼1987 2023-6-30 12:33:19 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 赞兔论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表