Some Assembly Required 1

This commit is contained in:
Maxime Vorwerk
2024-06-18 17:04:26 +02:00
parent fecb37666a
commit 0cf185032d
2 changed files with 305 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
const _0x402c=['value','2wfTpTR','instantiate','275341bEPcme','innerHTML','1195047NznhZg','1qfevql','input','1699808QuoWhA','Correct!','check_flag','Incorrect!','./JIFxzHyW8W','23SMpAuA','802698XOMSrr','charCodeAt','474547vVoGDO','getElementById','instance','copy_char','43591XxcWUl','504454llVtzW','arrayBuffer','2NIQmVj','result'];
const _0x4e0e=function(_0x553839,_0x53c021){
_0x553839=_0x553839-0x1d6;
let _0x402c6f=_0x402c[_0x553839];
return _0x402c6f;
};
(function(_0x76dd13,_0x3dfcae){
const _0x371ac6=_0x4e0e;
while(!![]){
try{
const _0x478583=-parseInt(_0x371ac6(0x1eb))+parseInt(_0x371ac6(0x1ed))+-parseInt(_0x371ac6(0x1db))*-parseInt(_0x371ac6(0x1d9))+-parseInt(_0x371ac6(0x1e2))*-parseInt(_0x371ac6(0x1e3))+-parseInt(_0x371ac6(0x1de))*parseInt(_0x371ac6(0x1e0))+parseInt(_0x371ac6(0x1d8))*parseInt(_0x371ac6(0x1ea))+-parseInt(_0x371ac6(0x1e5));
if(_0x478583===_0x3dfcae)break;
else _0x76dd13['push'](_0x76dd13['shift']());
}
catch(_0x41d31a){
_0x76dd13['push'](_0x76dd13['shift']());
}
}
}
(_0x402c,0x994c3)
);
let exports;
(async()=>{
const _0x48c3be=_0x4e0e;
let _0x5f0229=await fetch(_0x48c3be(0x1e9)),
_0x1d99e9=await WebAssembly[_0x48c3be(0x1df)](
await _0x5f0229[_0x48c3be(0x1da)]()
),
_0x1f8628=_0x1d99e9[_0x48c3be(0x1d6)];
exports=_0x1f8628['exports'];
})();
function onButtonPress(){
const _0xa80748=_0x4e0e;
let _0x3761f8=document['getElementById'](_0xa80748(0x1e4))[_0xa80748(0x1dd)];
for(let _0x16c626=0x0;_0x16c626<_0x3761f8['length'];_0x16c626++){
exports[_0xa80748(0x1d7)](_0x3761f8[_0xa80748(0x1ec)](_0x16c626),_0x16c626);
}
exports['copy_char'](0x0,_0x3761f8['length']),
exports[_0xa80748(0x1e7)]()==0x1?document[_0xa80748(0x1ee)](_0xa80748(0x1dc))[_0xa80748(0x1e1)]=_0xa80748(0x1e6):document[_0xa80748(0x1ee)](_0xa80748(0x1dc))[_0xa80748(0x1e1)]=_0xa80748(0x1e8);
}

View File

@@ -0,0 +1,261 @@
(module
(table $table0 1 1 funcref)
(memory $memory0 2)
(global $global0 (mut i32) (i32.const 66864))
(global $global1 i32 (i32.const 1072))
(global $global2 i32 (i32.const 1024))
(global $global3 i32 (i32.const 1328))
(global $global4 i32 (i32.const 1024))
(global $global5 i32 (i32.const 66864))
(global $global6 i32 (i32.const 0))
(global $global7 i32 (i32.const 1))
(export "memory" (memory $memory0))
(export "__wasm_call_ctors" (func $func0))
(export "strcmp" (func $func1))
(export "check_flag" (func $func2))
(export "input" (global $global1))
(export "copy_char" (func $func3))
(export "__dso_handle" (global $global2))
(export "__data_end" (global $global3))
(export "__global_base" (global $global4))
(export "__heap_base" (global $global5))
(export "__memory_base" (global $global6))
(export "__table_base" (global $global7))
(func $func0
)
(func $func1 (param $var0 i32) (param $var1 i32) (result i32)
(local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) (local $var11 i32) (local $var12 i32) (local $var13 i32) (local $var14 i32) (local $var15 i32) (local $var16 i32) (local $var17 i32) (local $var18 i32) (local $var19 i32) (local $var20 i32) (local $var21 i32) (local $var22 i32) (local $var23 i32) (local $var24 i32) (local $var25 i32) (local $var26 i32) (local $var27 i32) (local $var28 i32) (local $var29 i32) (local $var30 i32) (local $var31 i32) (local $var32 i32) (local $var33 i32) (local $var34 i32) (local $var35 i32) (local $var36 i32) (local $var37 i32) (local $var38 i32) (local $var39 i32) (local $var40 i32) (local $var41 i32) (local $var42 i32) (local $var43 i32)
global.get $global0
local.set $var2
i32.const 32
local.set $var3
local.get $var2
local.get $var3
i32.sub
local.set $var4
local.get $var4
local.get $var0
i32.store offset=24
local.get $var4
local.get $var1
i32.store offset=20
local.get $var4
i32.load offset=24
local.set $var5
local.get $var4
local.get $var5
i32.store offset=16
local.get $var4
i32.load offset=20
local.set $var6
local.get $var4
local.get $var6
i32.store offset=12
block $label1
loop $label2
local.get $var4
i32.load offset=16
local.set $var7
i32.const 1
local.set $var8
local.get $var7
local.get $var8
i32.add
local.set $var9
local.get $var4
local.get $var9
i32.store offset=16
local.get $var7
i32.load8_u
local.set $var10
local.get $var4
local.get $var10
i32.store8 offset=11
local.get $var4
i32.load offset=12
local.set $var11
i32.const 1
local.set $var12
local.get $var11
local.get $var12
i32.add
local.set $var13
local.get $var4
local.get $var13
i32.store offset=12
local.get $var11
i32.load8_u
local.set $var14
local.get $var4
local.get $var14
i32.store8 offset=10
local.get $var4
i32.load8_u offset=11
local.set $var15
i32.const 255
local.set $var16
local.get $var15
local.get $var16
i32.and
local.set $var17
block $label0
local.get $var17
br_if $label0
local.get $var4
i32.load8_u offset=11
local.set $var18
i32.const 255
local.set $var19
local.get $var18
local.get $var19
i32.and
local.set $var20
local.get $var4
i32.load8_u offset=10
local.set $var21
i32.const 255
local.set $var22
local.get $var21
local.get $var22
i32.and
local.set $var23
local.get $var20
local.get $var23
i32.sub
local.set $var24
local.get $var4
local.get $var24
i32.store offset=28
br $label1
end $label0
local.get $var4
i32.load8_u offset=11
local.set $var25
i32.const 255
local.set $var26
local.get $var25
local.get $var26
i32.and
local.set $var27
local.get $var4
i32.load8_u offset=10
local.set $var28
i32.const 255
local.set $var29
local.get $var28
local.get $var29
i32.and
local.set $var30
local.get $var27
local.set $var31
local.get $var30
local.set $var32
local.get $var31
local.get $var32
i32.eq
local.set $var33
i32.const 1
local.set $var34
local.get $var33
local.get $var34
i32.and
local.set $var35
local.get $var35
br_if $label2
end $label2
local.get $var4
i32.load8_u offset=11
local.set $var36
i32.const 255
local.set $var37
local.get $var36
local.get $var37
i32.and
local.set $var38
local.get $var4
i32.load8_u offset=10
local.set $var39
i32.const 255
local.set $var40
local.get $var39
local.get $var40
i32.and
local.set $var41
local.get $var38
local.get $var41
i32.sub
local.set $var42
local.get $var4
local.get $var42
i32.store offset=28
end $label1
local.get $var4
i32.load offset=28
local.set $var43
local.get $var43
return
)
(func $func2 (result i32)
(local $var0 i32) (local $var1 i32) (local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32)
i32.const 0
local.set $var0
i32.const 1072
local.set $var1
i32.const 1024
local.set $var2
local.get $var2
local.get $var1
call $func1
local.set $var3
local.get $var3
local.set $var4
local.get $var0
local.set $var5
local.get $var4
local.get $var5
i32.ne
local.set $var6
i32.const -1
local.set $var7
local.get $var6
local.get $var7
i32.xor
local.set $var8
i32.const 1
local.set $var9
local.get $var8
local.get $var9
i32.and
local.set $var10
local.get $var10
return
)
(func $func3 (param $var0 i32) (param $var1 i32)
(local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32)
global.get $global0
local.set $var2
i32.const 16
local.set $var3
local.get $var2
local.get $var3
i32.sub
local.set $var4
local.get $var4
local.get $var0
i32.store offset=12
local.get $var4
local.get $var1
i32.store offset=8
local.get $var4
i32.load offset=12
local.set $var5
local.get $var4
i32.load offset=8
local.set $var6
local.get $var6
local.get $var5
i32.store8 offset=1072
return
)
(data (i32.const 1024) "picoCTF{d88090e679c48f3945fcaa6a7d6d70c5}\00\00")
)