最近还得吐槽啊…..顺便更新ctf的题目咯

其实最近更新少主要是最近事情很多,杂,没办法。能管理到博客的唯一东西就是宕机警报了.....话说博客最近长草长到两米高了都快...

其实原先是写了很多文的,不过都是草稿,而且也不想发布,因为大家都能在网上找到.....

好,更新一下博客吧^_^

New feature: MathJax

因为最近在接触算法类的东西,估计以后公式少不了,可是又没法直接显示,只能挨个截图。搞得我都要吐了.......上网找 solution 还特喵的真有一个:MathJax 。有需要的童鞋可以直接在网站底部加载,方法如下:

在 footer.php 添加如下代码即可:

试试看好不好用:

\begin{array}{cc} a & b \\ c & d \end{array}

In equation \eqref{eq:sample}, we find the value of an interesting integral: \begin{equation} \int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15} \label{eq:sample} \end{equation}

\begin{equation}\label{eq1}r = r_F+ \beta (r_M - r_F) + \epsilon\end{equation}

\begin{equation} f\left( a\right) =\dfrac {1} {2\pi i}\cdot \oint _{\gamma }\dfrac {f\left( z\right) } {z-a}dz \end{equation}

有关ctf中js加密题

js混淆加密的

题目传送门CTF训练营

查看网页源代码,发现这样一坨....东西.....

 

很明显经过压缩和混淆,但是这种混淆是肯定是自带解密函数的,要不浏览器也不能识别了。

对于 function(p,a,c,k,e,d)函数,里面有个 return p,p就是解密后结果。在前面增加一句 console.log(p)就能看到p的代码了。然后使用网上的js在线格式化格式化一下,得到了:

接下来就倍感无聊了:逐句的分析。

a是弹框输入后的值,b是一个字符串,c貌似是一个正则,先忽略。d是0,e是a的字串,是9-13位。 $.md5(e) == b.replace(/7/ig, ++d).replace(/8/ig, d * 0x2)这个在console给相关变量赋值后,可以直接运行:

一眼就看到了MD5密文,果断cmd5。e的明文为 jiami,也就是说a的9-13位是 jiami

然后f是a的 substr(0 / d, 7),也就是1-7位,又因为下面 f.substr(0x5, 0x2) == "\x6a\x73"所以a的6-7位也是 js

下面又是一个md5,cmd5得到 f.substr(0x0 / d, d + 0x3)wctf,因为刚才已经++d了,所以这里是f的1-3位是 wctf,也就是说a的前四位是 wctf了。加上刚才算出来的,a是 wctf*js*jiami*****未知的部分。因为骚年的flag就是 wctf{...}格式的,所以第一个 *就是 {

r = a.substr(0xd);,r是从a的第13位开始的,而且需要 r.charCodeAt(d) - 0x19 == r.charCodeAt(++d) - 0x19 && r.charCodeAt(--d) - 0x19 == r.charCodeAt(--d)才能继续运行。

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。因为这里都是字母符号,返回的也就是他们的ascii码。混淆后有点难理解,好好的想一下。前面的那句 r.charCodeAt(d) - 0x19 == r.charCodeAt(++d) - 0x19等价于 r.charCodeAt(1) == r.charCodeAt(2),也就是2、3位字符一样的。后面的那一句 r.charCodeAt(--d) - 0x19 == r.charCodeAt(--d)等价于 r.charCodeAt(1) - 0x19 == r.charCodeAt(0)也就是说1、2位字符差25。

下面两句可以得到g为 oog.concat("\x65\x61\x73\x79")ooeasy,由 r.substr((++d) * 0x3, 0x6)得到r的4-9位是 ooeasy,加上前面的就是 ***ooeasy,a就是 wctf{js*jiami***ooeasy}。这时候我就猜是 so easy,但是 so还有数字 各种大小写之间都不是差25的。

c.test(a)是js的正则表达式匹配a,参考,得知a里面应该至少有两个下划线。然后因为a的长度不知道,先跳过下面那一句。

接着来, a.substr(0x4, 0x1) != String.fromCharCode(d) || a.substr(0x4, 0x1) == "\x7a"不成立的时候才会提示成功,两个都要不成立就行,所以 a.substr(0x4, 0x1) == String.fromCharCode(d)而且 a.substr(0x4, 0x1) != "z"就行了。明显,d代表一个ascii码,为123。根据前面的 d = String(0x1) + String(a.length)得到a的长度为23,现在正好缺一位,应该是在最后面补上 },因为有两位是一样的,现在a就是 wctf{js*jiami*##ooeasy}了。

还记得前面说的这个字符串中有两个下划线后面是 .+,也就是下划线后面至少有一个字符,只能两个*的位置是下划线,然后#就是比下划线ascii大25的字符x,最终得到 wctf{js_jiami_xxooeasy},通过了~

所以,混淆加密其实不难,难就难在你能不能坚持着搞完他.....

js_encrypt_test_passed

js fuck

特征就是大量的[],其实这个最简单,直接alert一下就可以看到原文了....

url encode

这个更渣.....只要声明变量包含到unescape函数里就OK了....

 

最近很忙,刚刚考完二模,所以更新的事打算停一下,毕业了写个他三天五天的....还请各位大大们理解啊~

声明: 本文采用 BY-NC-SA 协议进行授权 | Deamwork
转载请注明转自《最近还得吐槽啊…..顺便更新ctf的题目咯
本文地址:https://www.deamwork.com/archives/balh-balh-ctf-test.orz6

回复 (0)

› 尚无评论。

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img src="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

 :mrgreen:  :|  :twisted:  :arrow:  8O  :)  :?  8-)  :evil:  :D  :idea:  :oops:  :P  :roll:  ;)  :cry:  :o  :lol:  :x  :(  :!:  :?:

引用通告 (0)

› 尚无引用通告。

欢迎来到Deamwork! o(∩_∩)o
X