打开网站,在白色背景下的任一点上点击鼠标,白色部分都会消失(包括password输入框),那么就无法输入。

查看源码,发现是明显的从源码解决问题。

火狐F12查看器查看源码(如果是简单的操作,可以view-source看源码,用到控制台的话,尽量用开发者工具查看)。

先看页面上输入密码的地方的代码:

可以看到,输入密码,点击按钮就会执行zhegejiamiyidiandoubuku(),我们如果知道zhegejiamiyidiandoubuku()是什么作用,输不输人就不重要了,所以,可疑目标:zhegejiamiyidiandoubuku()

(有的时候就是先找到一个可疑的目标,然后一点点去验证猜想是否正确)

把源码全部展开,发现一些可疑的地方(直接看图):

图1:

图2:

图3:

下面对这些地方进行分析:

图1:上面框中的的这一堆不知道是啥,先放下,下面这一段好像是url编码,解码得到

var Words ="<center>

<p>不难的,输入密码辣!</p>

<script language="JScript.Encode">#@~^EwAAAA==C^+.D`rt+^VKE#p@#@&EwUAAA==^#~@

<!--

    //***(づ ̄ 3 ̄)づ我要抱抱!!!***

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<!--v p(){6 8=h.o.e.n;6 2="q==";6 a=\'t.s?e=\';6 d=j.r;6 k=\'\';6 g=2.9(m,4*4)+2.9(l,5*5)+2.9(0,1)+2.b(7,1)+2.b(z,1)+2.b(B,1)+2.9(3+3,7);8=d.b(d.f(\'?\')+1);a=a.9(0,a.f(\'?\')+1)+\'A=\';w(i=0;i<8.y;i++){x(8.c(i)==g.c(i)){h.u(8.c(i))}}j=a+8}-->',38,38,'||cry||||var||pass|substring|addr|substr|charAt|locatie|passwd|indexOf|pass2|document||location|out|24|15|value|form|zhegejiamiyidiandoubuku|Rm9yM0re354v5E4FUg5FasDboooo|href|php|soroki|write|function|for|if|Len|11|l0vau|13'.split('|'),0,{}))

-->

</script>

<form name="form">

Password: <input type="password" name="passwd"> <input type="button" value="boom!!!!" onClick="zhegejiamiyidiandoubuku()">

</form>

</center>";

    function SetNewWords()

    {

             var NewWords;

             NewWords = unescape(Words);

             document.write(NewWords);

    }

    SetNewWords();

然而这一部分图二上就有, 而且有一段JScript.Encode,注意JScript.Encode的部分只是:#@~^EwAAAA==C^+.D`rt+^VKE#p@#@&EwUAAA==^#~@,其余的可不是,解码之后得到:alert("hello");

 没什么用啊。

图二下面这一段是jsfuck,解码得到

可能是提示上面的那个url解码的。

图三的代码也看不出有什么作用。

其实重点就在eval()这,做过这样的题的就知道,这是js代码,可以直接在控制台进行调试。

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<!--v p(){6 8=h.o.e.n;6 2="q==";6 a=\'t.s?e=\';6 d=j.r;6 k=\'\';6 g=2.9(m,4*4)+2.9(l,5*5)+2.9(0,1)+2.b(7,1)+2.b(z,1)+2.b(B,1)+2.9(3+3,7);8=d.b(d.f(\'?\')+1);a=a.9(0,a.f(\'?\')+1)+\'A=\';w(i=0;i<8.y;i++){x(8.c(i)==g.c(i)){h.u(8.c(i))}}j=a+8}-->',38,38,'||cry||||var||pass|substring|addr|substr|charAt|locatie|passwd|indexOf|pass2|document||location|out|24|15|value|form|zhegejiamiyidiandoubuku|Rm9yM0re354v5E4FUg5FasDboooo|href|php|soroki|write|function|for|if|Len|11|l0vau|13'.split('|'),0,{}))

贴到控制台里,将eval改成console.log,回车,得到

这不是就拿到zhegejiamiyidiandoubuku()的代码了,到这里别急躁,耐心看代码,发现也就是定义一些变量,然后赋值和字符串截取什么的,说明几点:

1)pass在代码最前面看似是将passwd的值赋给它了,但后面又重新进行了赋值,所以不用管。

2)注意几个函数:substring()、substr()、indexOf(),就是字符串截取和取索引值

其实,不用看那么仔细,知道我们要的是什么就行了,我们要的就是addr、pass、pass2

再一次进行调试,这里有个关于console.log()需要学习的

1)console.log()内是不允许有变量的

<script>
var myObj = { name : "菜鸟教程", site : "www.runoob.com" };
console.log(myObj);
</script>

变量直接在控制台中就能用,所以,下面就用不着console.log()了。

2)控制台输出东西要用document.write()

将用到的代码并更改截取贴入控制台来获取addr、pass、pass2

就这样直接贴进去用document.write()输出,最后得到

pass:http://ctf5.shiyanbar.com/crypto/4/

addr:soroki.php?l0vau=

pass2:FoRevEr

于是访问http://ctf5.shiyanbar.com/crypto/4/soroki.php?l0vau=FoRevEr

得到:aW4yIHNheTpJIGxvdmUgeW91IEZvcmV2ZXIhVGhlIEdpcmwgc2F5OiB6cWN7ZmtxdGxfZnBfeWZkX3B5fQ==

解码即得到in2 say:I love you Forever!The Girl say: zqc{fkqtl_fp_yfd_py}。

zqc{fkqtl_fp_yfd_py}看着像flag,但是结果格式是ctf,这个看着像个凯撒或栅栏,试了试是凯撒解码,解码拿到flag。

实验吧-密码学-他的情书(进一步了解js代码调试和console.log)的更多相关文章

  1. 实验吧—密码学——WP之 困在栅栏里的凯撒

    首先我们研究题目.栅栏:凯撒 还发现一个数字“6”,那么我们很容易就有一个解题思路 对这段字符进行栅栏解密再进行凯撒解密 我们都知道,栅栏解密的关键就是栏数,根据题目中我们发现的信息,这段字符串是12 ...

  2. 实验吧—密码学——WP之 古典密码

    首先我们研究题目 1.古典密码 2.key值的固定结构 3.加密方式就在谜面里 首先看到这些数字我们就能想到ASCII,而且做题多了就能看出123是{:125是},所以得到字符串如下 OCU{CFTE ...

  3. 实验吧—密码学——WP之 杯酒人生

    首先我们研究题目 1.这是古典密码 2.喵星人要发送一段密码 3.加密过的秘钥“HTRUZYJW” 4.秘钥加密前是一个单词 我们先解决这个秘钥,用凯撒解密 而我们知道,在古典密码里,有秘钥的加密方式 ...

  4. 实验吧—密码学——WP之 传统知识+古典密码

    仔细读题,发现有价值的信息: 几个不同的年份:“+甲子”:key值结构 首先我们并不知道这些年份在这里代表着什么,那么我们就去百度一下发现了如下所示的六十甲子顺序表 而在表中每个年份前都有数字,将他们 ...

  5. 实验吧密码学:RSAROLL

    原题: {920139713,19} 704796792 752211152 274704164 18414022 368270835 483295235 263072905 459788476 48 ...

  6. 实验吧-密码学-Fair-Play(Playfair解密)

    这个题是Playfair解密. Playfair解密算法首先将密钥填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文. 对密文解密规则如下 ...

  7. 实验吧-密码学-try them all(加salt的密码)、robomunication(摩斯电码)、The Flash-14(闪电侠14集)

    try them all(加salt的密码) 首先,要了解什么事加salt的密码. 加salt是一种密码安全保护措施,就是你输入密码,系统随机生成一个salt值,然后对密码+salt进行哈希散列得到加 ...

  8. 实验吧-密码学-变异凯撒(ascii码规律运算)

    密文是:afZ_r9VYfScOeO_UL^RWUc 刚开始很迷,不知道往什么方向,到最后才发现,原来和ASCII有关. 将flag{的ASCII码和密文的ASCII码对比: 97 102 90 95 ...

  9. 实验吧-密码学-Decode、困在栅栏里的凯撒

    Decode 这是一个多重加密. 0x253464253534253435253335253433253661253435253737253464253531253666253738253464253 ...

随机推荐

  1. webpack打包文件中的@符号表示什么意思

    在看使用webpack打包的项目代码时,经常会看到在路径中引用@符号 import one from '@/views/one.vue' 那这里的@符号到底表示什么意思呢? 这其实利用了webpack ...

  2. 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ

    题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...

  3. js 用于运行string中的<script>和</script>之间的函数

    /** * Created by 炜文 on 2017/2/15. */ var intext = '485222<script> var i=2;var j=2;console.log( ...

  4. MariaDB——数据库基础与sql语句

    数据库介绍 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据 ...

  5. django 自定义模版过滤器

    自定义的模版过滤器必须要放在app中,并且该app必须在INSTALLED_APPS中进行安装.然后再在这个app下面创建一个python包叫做templatetags(这个名字是固定的,不能随意更改 ...

  6. redis的基本操作

    redis是key-value的数据结构,每条数据都是⼀个键值对 键的类型是字符串 注意:键不能重复 值的类型分为五种: 字符串string 哈希hash 列表list 集合set 有序集合zset ...

  7. 微信7.0以后更新后H5页面定位不准确

    在有定位的页面,微信更新完7.0以后定位也不提醒说是否同意定位 然后定位都跑到几百公里以外的地方了,然后怎么百度都不知道是啥问题,后面问了前端说微信更了7.0以后好像HTTP的就不支持了,然后我就去百 ...

  8. greenplum 存储过程 变量类型

    参考: https://www.cnblogs.com/kungfupanda/p/4478917.html

  9. windows制作动态链接库和使用二

    动态库的另一种制作方法: 不使用_declspec(dllexport)关键字,使用.def文件 //exportFun.def 文件名随意 EXPORT add @ //格式 函数名 @编号 < ...

  10. (转)如何判断VPS是基于哪种虚拟技术?Xen、OpenVZ、Xen HVM、KVM还是VMware

    对于VPS新手来说,怕被无良的奸商给忽悠,下的Xen的却给的OpenVZ的,如何来判断自己买的VPS是那种虚拟技术的,下面VPS侦探整理一些常见的方法. 1.通过系统上的相关目录或文件判断 执行:ls ...