zoukankan      html  css  js  c++  java
  • ctf writeup之程序员密码

    起因

    在v2ex上看到有人发了一篇帖子,说做了一个程序员小游戏,遂试玩了一下。

    游戏的地址在这里: http://www.bettertomissthantomeet.com/pages/level.html

    image

    第零关

    控制台打印的字符“Hello, world!”,复制粘贴通过。

    image

    第一关

    控制台又打印了一串字符:

    image

    看着像base64,拿去解码,得到“I'm a programmer.”,复制粘贴通过。

    第二关

    为毛又是控制台打印…

    image

    拿去base64解码,得到“ping www.programmerpassword.com”,遂ping了一下:

    image 

    将ip地址“47.104.152.148”复制粘贴通过。

    感觉这个设计得不太好,因为一般ping的话是为了看ttl延时,少数情况是为了解析到ip地址,不过好歹也能够联想到。

    第三关

    这次控制台没有输出了,并且页面上也没有啥提示,于是ctrl+shift+c选了下提交按钮,然后看到了

    image

    这是一个透明元素,所以页面上看不到,复制“123456”粘贴没通过….需要完整的复制“密码是123456”粘贴提交才能通过,作者很顽皮啊。

    第四关

    这次还是老的套路,控制台打印了一串十六进制数:

    image

    拿去解码(关键词十六进制转字符串),将“4275672072756e6e696e67”转为字符串“Bug running”,复制粘贴通过。

    第五关

    image 
    选一下这个井号:

    image 

    看到有一个样式是rgb(r,g,b)这种格式指定的,然后页面上又是一个大大的井号,遂将“rgb(47, 69, 132)”拿去rgb转hex,得到“#2F4584”,但是很悲剧的事情是作者的判断正确的方法是将我们提交得的答案md5和正确答案的md5进行比对,所以就没办法兼容大小写这种情况,这个是我想吐槽的第一点。然后我想吐槽的第二点是没有办法兼容大小写就算了标准答案还是非主流的小写…hex的A-F很少有用小写的,所以就导致大多数人都会被坑一下…

    提交“#2f4584”通过。

    第六关

    控制台打印了一堆东西,很明确表示这是base64。然后观察base64的开头和img的src base64很像,遂拿去放到一个html中:

    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    </head>
    <body>
    <img src="data:image/png;base64,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">
    
    </body>
    </html>

    打开这个html:

    image

    提交“463700”通过。

    第七关

    有个挂掉的图片:

    image

    然后切换到network看一下:

    image

    发现这明明是个doc类型的好吧,然后手动打开:

    image

    提交“better to miss than to meet”通过。

    第八关

    页面上显示了一行字:

    image

    控制台也有输出:

    image

    遂在控制台使用getPassword()方法解密(别问我怎么知道的,因为我读了这个js…):

    image

    提交“25LTQWMP9Y”通过。

    第九关

    这关是设计得还比较好的,因为所使用的技术的特点体现的非常好。

    页面上就这么一张图片:

    看了半天,以为玄机在图片上的代码里,还去看了PDO的相关资料….代码成功的吸引了猿类的注意力,如果是一张风景图之类的恐怕就能够秒想到图片隐写术。

    右键把图片保存到本地,然后使用winhex打开,搜索FFD9找jpg图片的结尾。

    jpg文件有一个特点就是以FFD9为结束符,结束符之后的内容就直接无视,利用这个特性可以往尾部藏一些东西。

    下图中高亮的部分都是会被无视的内容:

    image 

    这是两行命令,最有可能的答案就是这两行命令的输出了,来分析一下可能会输出什么:

    cd /data/log/../www/
    pwd

    log会被..约掉,所以是cd /data/www/然后用pwd输出当前路径,Linux下pwd是不会带最后的斜线的,所以最终的输出就是“/data/www”,提交通过。

    不足

    核心的判断逻辑在这个js中:http://www.bettertomissthantomeet.com/static/js/app/level.js,将判断放在前端还很齐齐整整,人家只要阅读一遍这个js就大概了解了,这样大大降低了难度不太好。

    不过最后的隐写术真的很6,成功误导我在PDO的方向上越走越远,花了一大会儿时间才想到….

    .

  • 相关阅读:
    软件工程第二次作业
    软件工程第一次作业
    5T-时延小结
    4T--5G网络时延
    2T--网络切片
    1T--5G 三大应用场景
    2020软件工程第一次作业
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/cc11001100/p/8764153.html
Copyright © 2011-2022 走看看