zoukankan      html  css  js  c++  java
  • PICO CTF 2013 PHP 2: 85

    这一题应该是入门级题目吧

    链接:http://oj.xctf.org.cn/problems/253

    --------------------------------------------------------------------------------

    首先点击打开题目的超链接就显示了一句话,一般都先看一下源码吧


    源码有个注释,说源代码在index.phps里,那就在地址栏输入者个文件看看咯,输入就提示下载了,下载了就更好


    用编辑器打开就看到代码如下:

    <?
    if(eregi("admin",$_GET[id])) {
      echo("<p>not allowed!</p>");
      exit();
    }
    
    $_GET[id] = urldecode($_GET[id]);
    if($_GET[id] == "admin")
    {
      echo "<p>Access granted!</p>";
      echo "<p>Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </p>";
    }
    ?>
    
    
    <br><br>
    Can you authenticate to this website?
    <!-- source: index.phps -->
    首先第一个if里的eregi函数可以说匹配函数吧,只要含有admin无论大小写都返回true

    所以我们肯定不能直接输入admin这个单词的,这就为下面作了铺垫了

    下面将$_GET['id']进行了UrlDecode解码,然后再跟admin进行比较,如果相等就输出key,想想都有点击小激动啊(以下献丑了,其实每次成功都经历了不少,很多时候那些成功人士都没有告诉你们,一方面可能能让你们产生崇拜感,另一方面,人对于痛苦,不爽的事情都是天性地去忘掉的)

    先去百度一下在线UrlEncode编码吧(想着一编码,绕过第一个if,再解码,进入第二个if,输出key,多好,但是理想总是很遥远)


    看到这我的内心是崩溃的

    *

    *

    *

    *

    *

    *

    *

    其实中间还犯了一点小错误,毫无目的的去搜寻地址栏支持什么编码什么的(现在看来:跟源代码的原意违背了,源代码就很明确的都用了urldecode了,就肯定是要我们输入urlencode后的值啊)

    接下里就直接搜了w3c的url编码表

    ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode
    æ %00 0 %30 ` %60
      %01 1 %31 a %61
      %02 2 %32 b %62
      %03 3 %33 c %63
      %04 4 %34 d %64
      %05 5 %35 e %65
      %06 6 %36 f %66
      %07 7 %37 g %67
    backspace %08 8 %38 h %68
    tab %09 9 %39 i %69
    linefeed %0a : %3a j %6a
      %0b ; %3b k %6b
      %0c < %3c l %6c
    c return %0d = %3d m %6d
      %0e > %3e n %6e
      %0f ? %3f o %6f
      %10 @ %40 p %70
      %11 A %41 q %71
      %12 B %42 r %72
      %13 C %43 s %73
      %14 D %44 t %74
      %15 E %45 u %75
      %16 F %46 v %76
      %17 G %47 w %77
      %18 H %48 x %78
      %19 I %49 y %79
      %1a J %4a z %7a
      %1b K %4b { %7b
      %1c L %4c | %7c
      %1d M %4d } %7d
      %1e N %4e ~ %7e
      %1f O %4f   %7f
    space %20 P %50 %80
    ! %21 Q %51   %81
    " %22 R %52 %82
    # %23 S %53 ƒ %83
    $ %24 T %54 %84
    % %25 U %55 %85
    & %26 V %56 %86
    ' %27 W %57 %87
    ( %28 X %58 ˆ %88
    ) %29 Y %59 %89
    * %2a Z %5a Š %8a
    + %2b [ %5b %8b
    , %2c %5c Π%8c
    - %2d ] %5d   %8d
    . %2e ^ %5e Ž %8e
    / %2f _ %5f   %8f
    为了方便测试,我就在本地写了个文件测试,代码如下:


    因为a的编码是%61嘛,我就在地址栏输入啊,结果一按回车.......,就变成a了


    我再看一下编码表,发现.....


    原来%号都用编码啊,那%2561不就是表示%61吗,马上测试一下


    那这题应该结束了吧


    哈哈得到key了,去拿那85分吧






  • 相关阅读:
    easyui dialog 中 panel-body 高度太小出现 滚动条 的原因
    VS2017 未找到编译器可执行文件 csc.exe
    苹果个人开发者账号开发证书申请
    react-native android 报错 error calling Appregistry.runApplication
    react-native android 权限问题
    安卓证书生成
    node.js定时任务 node-schedule
    node.js 发送邮件
    在移动端点击事件触发时,闪烁并且有灰色背景
    antd-mobile使用报错
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286580.html
Copyright © 2011-2022 走看看