title: DASCTF-X-CBCTF-2022几月挑战赛.md
date: 2022-09-18 20:24:51
tags:
DASCTF X CBCTF 2022九月挑战赛
3d小恐龙
这道题 经过队友的提示才做出来的 。。。。。
不过还没有学过js改天去学一下
想要通过硬玩游戏拿到flag是不可能的
这里通过抓包看一下
看到这里有我们的得分和一些其他的东西
直接改得分看看
应该是做了一些验证
所以我们要看看后面的东西是什么
这里是js代码
我们可以直接从浏览器获取
主要是main.js
把代码贴上来
这里是主要的
第一个参数是score 就是我们的分数没什么
第二个参数是checkCode
"&checkCode=" + md5(parseInt(e).toString() + t)
我们得到得分和t拼接 t是什么呢
往上找看看那里调用了sn函数
看到是checkcode
经过拼接之后就是
DASxCBCTF_wElc03e
就是我们要伪造的得分这里我们直接伪造分数为999999999
然后拼接上DASxCBCTF_wElc03e
在进行md5
7af62cb8b8cba921c03577a3cd01755f
md5之后的值为(这里我们如果需要验证的话 就是把我们直接自己手打的分数加上刚才的那一串数字就md5之后来验证)
7af62cb8b8cba921c03577a3cd01755f
看一下tm为什么 就是时间戳的前十位
因为是前十位 所以我们可以手动的去发包(前十位时间还是比较长的)
我们随便用一个语言来事实生成时间戳
然后我们只需要来提前一点点时间手点
在我们点的那一刻 时间戳变为我们手点的时间戳的时候 就会通过验证的到flag
这道题是个简单题 但是经过队友提示要看js那一段代码才做出来的。。。。
Text Reverser
这里他会把我们输入的东西反向的输出出来
这里之间我试了好多东西。。。。。第一开始没有想出来的sssti 只想到了命令执行 还是把这道题想的太脑残了
这里我们不能直接用sstipaylaod来做 应该是它先把我们的输入进行逆向输出然后再放到模板里面去渲染的这里 它过滤了{{}} 所以我们要用别的包裹去绕过它
可以用{%%}
{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__['popen']('ls').read()%}{%endif%}{%endfor%}
然后逆向输出出来
随便找个在想反向输出文本的网站就行
看到可以执行命令了
但是这道题过滤了 cat 和 tac 所以当时我又搜了一下linux上读取文件的命令
可以用 nl来读取文件
nl:输出文件内容并显示行号
标签:md,js,CBCTF,2022,DASCTF,我们,md5
From: https://www.cnblogs.com/kkkkl/p/16748376.html