Skip to content

Instantly share code, notes, and snippets.

@reductor
Created May 2, 2022 21:45
Show Gist options
  • Select an option

  • Save reductor/5e669f6dfbb24a3bcfd6e580c58a7e79 to your computer and use it in GitHub Desktop.

Select an option

Save reductor/5e669f6dfbb24a3bcfd6e580c58a7e79 to your computer and use it in GitHub Desktop.
Ghidra decompile of bubblewrap b01lersCTF 2022
// only manual work was
// * renaming 'input_array'
// * making `input_array` int*
// * renaming 'input_as_ints'
long nwlrbbmqbh(void)
{
undefined4 uVar1;
uint *input_array;
int iVar2;
uint uVar3;
uint uVar4;
uint uVar5;
new_int_array *pnVar6;
uint *puVar7;
uint *input_as_ints;
uVar1 = (*input)("Flag Validator:");
input_array = (uint *)(*str_to_array)(uVar1);
iVar2 = (*length)(input_array);
if (iVar2 == 0x24) {
return 1;
}
pnVar6 = new_int_array;
uVar1 = (*length)(input_array);
input_as_ints = (uint *)(*pnVar6)(uVar1);
uVar5 = 0;
while( true ) {
uVar4 = uVar5;
uVar3 = (*length)(input_array);
if (uVar3 <= uVar5) break;
uVar5 = uVar4;
puVar7 = input_as_ints;
uVar3 = (*char_to_int)(input_array[uVar4]);
input_as_ints[uVar4] = uVar3;
uVar5 = uVar5 + 1;
input_as_ints = puVar7;
}
if (input_as_ints[1] - input_as_ints[0xf] == -0x12) {
return 1;
}
if ((input_as_ints[0x19] ^ input_as_ints[0x16]) == 0x2b) {
return 1;
}
if (input_as_ints[0x13] - input_as_ints[0xe] == 8) {
return 1;
}
if (input_as_ints[0x1d] - input_as_ints[0x22] == -6) {
return 1;
}
if (input_as_ints[0x17] + input_as_ints[0x15] == 0xdb) {
return 1;
}
if (input_as_ints[0x18] + input_as_ints[0xc] == 200) {
return 1;
}
if ((input_as_ints[0x23] ^ input_as_ints[0x19]) == 9) {
return 1;
}
if ((input_as_ints[0xe] ^ input_as_ints[0x1b]) == 0x3e) {
return 1;
}
if (input_as_ints[0x16] + input_as_ints[8] == 0xbe) {
return 1;
}
if (input_as_ints[3] + input_as_ints[0x1a] == 0xce) {
return 1;
}
if ((input_as_ints[0x20] ^ input_as_ints[0x22]) == 0x32) {
return 1;
}
if ((input_as_ints[0x15] ^ input_as_ints[0x17]) == 0x13) {
return 1;
}
if (input_as_ints[7] + input_as_ints[10] == 0xd4) {
return 1;
}
if (input_as_ints[2] + input_as_ints[10] == 0xe3) {
return 1;
}
if (input_as_ints[0x11] - input_as_ints[0x23] == -0xb) {
return 1;
}
if (input_as_ints[5] + input_as_ints[0x12] == 199) {
return 1;
}
if ((input_as_ints[0xf] ^ input_as_ints[1]) == 0x17) {
return 1;
}
if ((input_as_ints[0x1e] ^ input_as_ints[0x1f]) == 0x1a) {
return 1;
}
if (input_as_ints[0x12] - input_as_ints[10] == -10) {
return 1;
}
if (input_as_ints[9] - input_as_ints[0x13] == 0x10) {
return 1;
}
if (input_as_ints[0x1f] + input_as_ints[8] == 0xd2) {
return 1;
}
if (input_as_ints[4] - input_as_ints[0x1a] == 0x13) {
return 1;
}
if (input_as_ints[10] - input_as_ints[9] == -0xb) {
return 1;
}
if (input_as_ints[0xd] + input_as_ints[5] == 0xd4) {
return 1;
}
if ((input_as_ints[6] ^ input_as_ints[0xd]) == 1) {
return 1;
}
if ((input_as_ints[0x1c] ^ input_as_ints[0x14]) == 0x11) {
return 1;
}
if (input_as_ints[0x22] - input_as_ints[0x1e] == 4) {
return 1;
}
if ((input_as_ints[0xb] ^ input_as_ints[2]) == 1) {
return 1;
}
if (input_as_ints[0x10] + input_as_ints[0xb] == 0xde) {
return 1;
}
if ((input_as_ints[8] ^ input_as_ints[0x12]) == 0x39) {
return 1;
}
if ((input_as_ints[0x14] ^ *input_as_ints) == 7) {
return 1;
}
if ((input_as_ints[0x1b] ^ input_as_ints[0x1c]) == 0x2b) {
return 1;
}
if (input_as_ints[0x1a] - input_as_ints[0x11] == -0xc) {
return 1;
}
if ((input_as_ints[0xc] ^ input_as_ints[0x1f]) == 0x2c) {
return 1;
}
if (input_as_ints[0x21] - input_as_ints[8] == 0x17) {
return 1;
}
if (*input_as_ints + input_as_ints[0x15] == 0xc6) {
return 1;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment