• 关于正则表达式


    也是刚接触ctf不久,在做题的过程中,也是学到了不少东西。
    刚开始是从南邮的题目入手的,不过再做过bugku上面的题之后,觉得这上面的更适合新手入门。
    题的难度与易到难,每道题所需要的知识点也非常清晰。
    前几天在做 字符?正则?这道题时,对正则略有心得,就想写篇文章,发表一下拙见。
    毕竟是新手,又是第一次写文章,若是有出错的地方,还请大家多包涵,多指教。

    对于正则表达式,只要我们能把这个表达式看懂,能够很好的理解它所要表达的内容,然后输入符合要求的字符串就行了。
    那么,对于新手来说,怎么才能看懂这让人头疼的正则表达式呢。
    这里网上有一个很详细的教程,大家可以看一下,我也是看完之后,才了解正则表达式的
    https://www.cnblogs.com/superstar/p/6638970.html

    下面,来看下bugku上面这道关于正则的题,源代码如下:
    <?php
    highlight_file('2.php');
    $key='KEY{********************************}';
    $IM= preg_match("/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
    if( $IM ){
    die('key is: '.$key);
    }
    ?>

    代码里,重要的就是这一句了:$IM= preg_match("/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match)
    这句话的大致意思就是我们要传入一个id参数,并且它要符合这个正则表达式:"/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i"
    下面,让我们一起来分析一下这个表达式:
    1.“key”是表达式直接写出来的字符串,直接利用即可 //?id=key
    2.“.”表示匹配任意字符 //这里我们用a来充当任意字符 ?id=keya
    3.“*”匹配前面的表达式零次或多次,此时“*”前面是“.” ,而“.”是表示的是匹配任意字符,所以就是匹配任意字符零次或多次 //这里我们匹配零次 //?id=keya
    4.“key”是表达式直接写出来的字符串,我们直接利用 //?id=keyakey
    5.“.”接下来又是点,我们还用a来充当 //?id=keyakeya
    6.“{4,7}”的意思就是匹配前面的字符4-7次,结合前面的“.”,就是匹配任意字符4-7次 //?id=keyakeyaaaa
    7.“key”是表达式直接写出来的字符串,我们直接利用 //?id=keyakeyaaaakey
    8.“:”也是表达式直接写出来的字符串,我们直接利用 //?id=keyakeyaaaakey:
    9.“/”代表“/” //?id=keyakeyaaaakey:/
    10.“.”这个点我们还用a来充当 //?id=keyakeyaaaakey:/a
    11.“/”代表“/” //?id=keyakeyaaaakey:/a/
    12.“(.*key)”这里我们输入key就行 //?id=keyakeyaaaakey:/a/key
    13.[a-z]代表a-z中的任意一个字符,这里我们继续用a //?id=keyakeyaaaakey:/a/keya
    14.[[:punct:]]代表任意一个字符,包括各种符号,输入标点符号即可,这里我们用个分号 //?id=keyakeyaaaakey:/a/keya;
    15./i代表大小写不敏感

    到此,我们就写出了一个符合要求的表达式,传入id参数就得到了flag。

    (ps:本人太菜,若有错误的地方欢迎大佬随时责骂。。。。xixixii)

  • 相关阅读:
    Google Plus 是什么?Google+让Google在线资产在日常生活中更普及
    再谈JavaScript的数据类型问题
    [置顶]信息发布系统 Jquery+MVC架构开发(5)DAL层
    Android:一个简单查询界面的实现
    定制圆角带背景色的矩形边框
    提高c#位图操作的速度[抄袭之作]
    使用XmlTextWriter和XmlTextReader操作Xml文件
    使用Mutex实现单程序实例
    单例模式实现延迟加载
    A记录、MX记录、CNAME 记录、URL转发、NS记录解释
  • 原文地址:https://www.cnblogs.com/liangshian/p/9904523.html
Copyright © 2020-2023  润新知