• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • CTF – RootMe解题报告 [Programming : Quick Response Code]

    渗透测试 EXP 59阅读 0评论

    挑战入口:Root-Me(https://www.root-me.org/en/Challenges/Programming/Quick-Response-Code)
      分类目录:Link to …(http://exp-blog.com/2019/01/02/pid-2597/8/)


    题目分析

    CAPTCHA me if you can 是相同的题型,都是图像识别,不过这题更简单。这题需要识别的是二维码,而且识别限时增加到 6 秒。

    多刷新几次页面可以发现,题目给出的二维码是缺损的,不过所缺损的必定是在二维码 左上、右上、左下 的三个“回”形图案。

    这三个“回”形图案是所有二维码都必须有的,其作用是用于扫描定位。

    二维码分析

    随便下载一个二维码,添加辅助线进行分析,可以得到几个信息:

    • 二维码宽高为 300×300
    • 二维码的每一个大像素点,实际上是由 9×9 的原子像素构成的
    • 二维码距离边沿为两个大像素点,即 18 个原子像素的距离
    • “回”形图案的外圈大小为 7×7 个大像素点,内圈为 3×3 个大像素点,镂空距离为 1 个大像素点
    • 以原子像素计算,三个缺失的“回”形图案的左上角顶点坐标分别为 (18, 18)、 (18, 216)、 (216, 18)

    二维码修复

    知道这些信息,就可以修复二维码了:

    • 以 (18, 18)、 (18, 216)、 (216, 18) 三个坐标为起点,分别画一个黑色矩形,矩形大小为 7×7 个大像素点(外圈)
    • 从三个坐标起点向右下方向位移 1 个大像素点,分别画一个白色矩形,矩形大小为 5×5 个大像素点(镂空区域)
    • 从三个坐标起点向右下方向位移 2 个大像素点,分别画一个黑色矩形,矩形大小为 3×3 个大像素点(内核)

    注:一个大像素点 = 9×9 个原子像素

    修复完成后尝试使用手机扫码,可以成功识别出二维码内容:

    解题代码

    此代码是用 python 3.5.2 写的,运行此代码的几个前提:

    • 已安装 zxing 二维码识别库,安装命令 pip install zxing
    • 已安装 JDK 1.7 ,这是 zxing 要用的,它本质就是一个 Java 项目

    注:
      Windows环境下,若安装了含 JDK 1.7 在内的多个 JDK 却依然报错:
      Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
      has value '1.8', but '1.7' is required.
      只需要把 C:\Windows\System32C:\Windows\SysWOW64 目录下的所有 java.exejavaw.exejavaws.exe 删除即可。


    代码的调用结果如下,页面提示 Congratz 说明完成挑战:


    转载请注明:EXP 技术分享博客 » CTF – RootMe解题报告 [Programming : Quick Response Code]

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址