vsCTF
type
status
date
slug
tags
summary
category
icon
password
x0rr3al
早知道c语言有一个main调用main的操作,似乎是为数不多c++不支持的c操作?但是这里好像第一次见了?
存在反调,可以下掉反调看check,或者直接看逻辑
sub_5560774764F7
: 一个简单异或0x12
sub_55607747650A
: 递归异或一个初始化好的表单字节加密flag,全是异或,这里不需要提取,直接爆破即可:
challange
用比较复杂的stl(主要是
vector
和string
)进行数据操作,做了个类似RSA的乘方+取模
然后加点异或生成了一个vector用于加密,但是加密逻辑只有异或,flag是50位的这里不需要硬逆逻辑,下掉
ptrace
反调(这里原本有exit(0);已经nop掉了)在check的地方把检查逻辑改掉(改成如果不相等则退出)
提取异或的key数据
直接梭就行(这里输入的是全1的flag,flag也刚好没有1,可以多用几个试几次):
teenage-wasm
说实话第一次做wasm...
选择的是
Ghidra + wasm
插件的反编译方案,还是比较清晰的可以拿到一个js代码,和一个wasm代码,这里找不到button的处理handle,纠结了很久,然后友web手说可能是wasm里面注册了监听,orz真该学学web了...
js代码中大概是
wasm-bindgen
编译的与wasm交互的产物,只负责中间件,将字符串共享给wasm,并接收共享字符串可以直接来看wasm,代码很多,rust编译的也相对抽象,经过前面说的可能是监听的button可以翻翻代码,然后发现了这个
flush_messages
加密逻辑也很显眼...
虽然其实还并不是狠看懂这个怎么传回去的,但是提取数据异或一下真的就是flag了...(他真的很喜欢异或)
9-26: 感觉本来wasm就见得不多,会做的更是少,还是不要草草结束了这个题,把他给逆完整一点
直觉上
flesh_message
既然找不到x-ref
,应该还是有更多处理逻辑的,首先是这里的比对local_18拿到了param2(即用户的一个输入),与
admin
字符串进行了比对,如果不是admin会返回Login fail的提示(可以右键更换数据类型)
这个地方感觉有机会,看看下面,找到了类似的结构:
但是这里没那么明显,先试试我怎么出的:
这里除去admin已经没有明显的全局变量了,能包含有字符信息的内容不多,然后突然意识到这里全都是可见字符:
那其实很蹊跷了,打印一下看看;感觉就很明显了,有明显的英文语法痕迹,逆转过来,这个就是密码...
回来看看逻辑,到底放在哪里
前面没注意,但是这里有个很明显的把参数提取成utf-8的操作:
然后存储
local_18
-> local_68
在下面进行比较还是对这些符号不够敏感...
上一篇
BRICS ctf
下一篇
ASIS_CTF2023
Loading...