好吧。好久没更新了,最近也是忙着考国二C语言,各种临时抱佛脚,也没心思写东西了。上礼拜日也是跟学长组队去参加了一个校内的CTF,神奇的是还拿了个第二名~其实我们是去纯打酱油的> <。
其中一道题挺有意思的,题设就记不清了,大概就是给了你一个IP和端口,我们telnet上去就显示这样:
Welcome to game space
Your ip: 172.16.37.125
There have a question for you
If you pass it, i’ll give you the key. #$*!@#$!@
Question: the “S” is? (Hint “S” is string of alphanumeric)
(“K0M1OHNHn2WX” + “S”) -> md5(fb61d14280636c25547a2482dacb5817)
Input “S”:
大概意思就是把”K0M1OHNHn2WX”这个字符串和S这个字符串拼接之后md5然后得到后面那个MD5密码。
我们用js写一段代码来匹配这个东西。
1 | //加载MD5.js |
至于怎么知道是四位的,多试就知道了。还有一个细节是这个字符串每次都是会改变的。3位的话在我的Air上跑完大概只要十秒,可以忽略不计,四位的时候大概花了两分钟多,但是这个Telnet在60s的时候会断开连接,出题者限制了时间,如果按照这个程序,大概就要分组跑了,我猜是那个用于MD5加密的函数库比较慢的关系。
于是乎,回来拿node的crypto库写了个一样的程序,我们可以看到node是单线程的,四核心的处理器只能用一个线程,CPU100%。
1 | var hex_md5 = function (str) { |
我们可以看到尼玛这个坑爹啊 只要30多s就可以了啊=-=
好吧。下次CTF继续加油把~是时候撸高数去了。。。