CTF【每日一题20160615】

继续 在http://hackgame.blackbap.org/上找乐子
第2道题是考查编码能力。
这里写图片描述


分析
1. 看页面中右侧有“提示在这里”似乎可以点击,但没有响应
2. 查看网页源代码(老套路),发现点击链接tip/nozend.php被注释了

 <div class="lvl_tip" id="lvl2tip">
      <span class="icon warning_icon"></span>
      <p>逆向解密</p><p>提示在 <b class="stress">这里<!-- tip/nozend.php --></b> </p> 
  </div>

3.将 tip/nozend.php粘贴在浏览器地址栏中,形成url: http://hackgame.blackbap.org/tip/nozend.php,并访问,出现如下代码页

<?php

highlight_file( __FILE__ );

function notrealmd5code($string,$operation='ENCODE') {
    if ($operation=='ENCODE'){
        $OutTxt = "";
        for ($x=0;$x<strlen($string);$x++) {
            $nr = ord($string[$x]);
            if ($nr < 128) {
                $nr += 128;
            }
            elseif ($nr > 127) {
                $nr -= 128;
            }
            $nr = 255 - $nr;
            $OutTxt .= sprintf("%02x", $nr);
        }
        return $OutTxt;
    } else {
        /* DECODE MISS
         * ord  Return ASCII value of character
         */
        return '';
    }
}
echo notrealmd5code('1c10121a181e121a0f1016110b4d4d4d','DECODE');

?>
显然该页面要输出:echo notrealmd5code('1c10121a181e121a0f1016110b4d4d4d','DECODE');
但notrealmd5code函数中的decode部分没有实现,那么我们需要将字符串1c10121a181e121a0f1016110b4d4d4d进行decode。这里的encode是对密码进行了一种16进制字符转换,是种简单的加密(古典替换类的),那么decode自然是反推了。如果要编php又不想搭环境解释环境,可以在线测试。例如http://www.shucunwang.com/RunCode/php/提供了测试环境。如果想用其他语言编解码函数,也可以把'1c10121a181e121a0f1016110b4d4d4d'拷贝出来。例如下面的python解码:
'''
解密算法python版(丑陋但能用)
'''
str = '1c10121a181e121a0f1016110b4d4d4d'
ctable = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,
            'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
out = ''
i = 0
while i < len(str):
    a = str[i].upper()
    b = str[i+1].upper()
    c = ctable[a]*16 + ctable[b]
    i += 2
    c = 255 - c
    if c >= 128:
        c -= 128
    elif c <=127:
        c += 128
    out += chr(c)

print out

#输出为:comegamepoint222
将comegamepoint222输入提交框,答案正确。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值