起因

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

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

第零关

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

第一关

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

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

第二关

为毛又是控制台打印…

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

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

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

第三关

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

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

第四关

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

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

第五关

 
选一下这个井号:

看到有一个样式是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:

提交“463700”通过。

第七关

有个挂掉的图片:

然后切换到network看一下:

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

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

第八关

页面上显示了一行字:

控制台也有输出:

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

提交“25LTQWMP9Y”通过。

第九关

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

页面上就这么一张图片:

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

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

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

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

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

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的方向上越走越远,花了一大会儿时间才想到….

.

ctf writeup之程序员密码的更多相关文章

  1. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  2. 数据分析:.Net程序员该如何选择?

    上文我介绍了用.Net实现的拉勾爬虫,可全站采集,其中.Net和C#(不区分)的数据爬取开始的早,全国主要城市都有一定数量的分布,加上有了近期其他相似技术类别的数据进行横向比较,可以得到比较合理的推测 ...

  3. 程序员的修养 -- 如何写日志(logging)

      在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力. 在实际的工作中,开发人员往往迫于的巨大时间压力,而写日志又是一个非常繁琐的事情,往往 ...

  4. Java程序员岗位

    Java程序员岗位面试题有哪些?   1.面向对象的特征有哪些方面(1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择 ...

  5. 从程序员到CTO的Java技术路线图(我爱分享)

    在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...

  6. php程序员绝不能违背的安全铁则

    作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本不知道黑客是如何入侵的.提交入侵.上传漏洞.sql 注入.跨脚本攻击等等.作为最基本的防范你 ...

  7. c++程序员必知的几个库

    c++程序员必知的几个库 1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5 ...

  8. 黑马程序员:Java编程_网络编程

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 网络编程就是两个(或多个)设备(例如计算机)之间的数据传输,更具体的说,网络编程 ...

  9. 9本java程序员必读的书(附下载地址)

    本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...

随机推荐

  1. C# QQ & 163 邮件发送

    这篇文章的目的并不是说明如果进行右键的发送,因为在.net 坝坝的怀抱下邮件发送的功能实现并不会很难,当然邮件发送的代码,还是会贴上的,昨天在写一个邮件发送的功能,我直接找到了原来的代码,想着直接就可 ...

  2. MySQL集合操作类型

    SQL语言包含3个集合操作符(union.intersect.expect)以执行各种集合操作. 此外,每个集合操作符可以有两种修饰符:一个表是包含重复项,另一个表是去除重复项(但不一定时所有的重复项 ...

  3. 误删除AUD$所在的表空间,无法切换用户

    问题故障:数据库Open,无法切换普通用户: ---递归SQL无法执行   SQL> conn hr/hr ERROR at line 1: ORA-00604: error occurred  ...

  4. 洛谷 P3258 [JLOI2014]松鼠的新家(树链剖分)

    题目描述松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在”树“上. 松鼠想邀请小熊维尼前来 ...

  5. Gogs搭建教程-极易搭建的自助 Git 服务

    前言 最近在搭建自己的持续集成,网上非常多的教程都是使用的gitlab作为代码管理工具,但是gitlab非常重,而且吃配置,而gogs非常轻便简介,成为不二之选. 操作系统:Centos 7.0 一. ...

  6. Redis常用命令--Sets

    Set是不重复且无序的字符串元素的集合. 还可以对set集取交集,并集,差等等. 在Redis中大概有15个操作Set的命令. SADD key member [member ...]:添加一个或者多 ...

  7. [USACO 08JAN]Haybale Guessing

    Description The cows, who always have an inferiority complex about their intelligence, have a new gu ...

  8. luogu2252 取石子游戏

    题目描述 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完 ...

  9. HDU - 3037:Saving Beans

    #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...

  10. ●BZOJ 1416 [NOI2006]神奇的口袋

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1416题解: Pòlya瓦罐模型: 给定罐子里每种颜色的球的个数A[i],按题目要求随机操作若 ...