# [BuckeyeCTF 2021](https://ctftime.org/event/1441)
###### tags: `ctf`
{%hackmd theme-dark %}
# Misc
### `replay`
- Wireshark

- resend the payload
- Script
```python=
# cat payload.txt | cut -d " " -f1 | cut -d '"' -f2 | tr -d "\n" > payload_processed.txt
from pwn import *
context.log_level="debug"
c = remote('misc.chall.pwnoh.io', 13371)
print(c.recv())
c.send(b"\x61\x61\x61\x61\x62\x61\x61\x61\x63\x61\x61\x61\x64\x61\x61\x61\x65\x61\x61\x61\x66\x61\x61\x61\x67\x61\x61\x61\x68\x61\x61\x61\x69\x61\x61\x61\x6a\x61\x61\x61\x6b\x61\x61\x61\x6c\x61\x61\x61\x6d\x61\x61\x61\x6e\x61\x61\x61\x6f\x61\x61\x61\x70\x61\x61\x61\x71\x61\x61\x61\x72\x61\x61\x61\x73\x61\x61\x61\x74\x61\x61\x61\x75\x61\x61\x61\x76\x61\x61\x61\x77\x61\x61\x61\x78\x61\x61\x61\x79\x61\x61\x61\x7a\x61\x61\x62\x62\x61\x61\x62\x63\x61\x61\x62\x64\x61\x61\x62\x65\x61\x61\x62\x66\x61\x61\x62\x67\x61\x61\x62\x68\x61\x61\x62\x69\x61\x61\x62\x55\x11\x40\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x57\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x20\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a")
c.interactive()
```
- Result: `buckeye{g00d_th1ng_P1E_w4s_d1s4bl3d_0n_th3_b1n4ry}`

# Web
## pay2win
- It obsucated the flag's order
- js source code
```js=
function plantFlag () {
const ciphertext = [234, 240, 234, 252, 214, 236, 140, 247, 173, 191, 158, 132, 56, 4, 32, 73, 235, 193, 233, 152, 125, 19, 19, 237, 186, 131, 98, 52, 186, 143, 127, 43, 226, 233, 126, 15, 225, 171, 85, 55, 173, 123, 21, 147, 97, 21, 237, 11, 254, 129, 2, 131, 101, 63, 149, 61]
const plaintext = ciphertext.map((x, i) => ((i * i) % 256) ^ x ^ 0x99)
const flagElement = document.querySelector('#flag')
plaintext.map((x, i) => {
const span = document.createElement('span')
span.classList.add(`flag-char-${i}`)
span.textContent = String.fromCharCode(x)
flagElement.appendChild(span)
return span
}
plantFlag()
```
- css source code
```css=
#flag-overlay {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 5;
background-color: #b5b5b5;
}
.flag-char-0 {
order: 13;
}
.flag-char-1 {
order: 47;
}
.flag-char-2 {
order: 40;
}
.flag-char-3 {
order: 49;
}
.flag-char-4 {
order: 39;
}
.flag-char-5 {
order: 50;
}
.flag-char-6 {
order: 15;
}
.flag-char-7 {
order: 26;
}
.flag-char-8 {
order: 35;
}
.flag-char-9 {
order: 18;
}
.flag-char-10 {
order: 29;
}
.flag-char-11 {
order: 44;
}
.flag-char-12 {
order: 42;
}
.flag-char-13 {
order: 20;
}
.flag-char-14 {
order: 55;
}
.flag-char-15 {
order: 32;
}
.flag-char-16 {
order: 43;
}
.flag-char-17 {
order: 11;
}
.flag-char-18 {
order: 48;
}
.flag-char-19 {
order: 14;
}
.flag-char-20 {
order: 16;
}
.flag-char-21 {
order: 25;
}
.flag-char-22 {
order: 52;
}
.flag-char-23 {
order: 4;
}
.flag-char-24 {
order: 2;
}
.flag-char-25 {
order: 30;
}
.flag-char-26 {
order: 17;
}
.flag-char-27 {
order: 21;
}
.flag-char-28 {
order: 54;
}
.flag-char-29 {
order: 22;
}
.flag-char-30 {
order: 0;
}
.flag-char-31 {
order: 38;
}
.flag-char-32 {
order: 7;
}
.flag-char-33 {
order: 37;
}
.flag-char-34 {
order: 46;
}
.flag-char-35 {
order: 45;
}
.flag-char-36 {
order: 24;
}
.flag-char-37 {
order: 3;
}
.flag-char-38 {
order: 19;
}
.flag-char-39 {
order: 31;
}
.flag-char-40 {
order: 23;
}
.flag-char-41 {
order: 33;
}
.flag-char-42 {
order: 8;
}
.flag-char-43 {
order: 41;
}
.flag-char-44 {
order: 27;
}
.flag-char-45 {
order: 6;
}
.flag-char-46 {
order: 9;
}
.flag-char-47 {
order: 28;
}
.flag-char-48 {
order: 53;
}
.flag-char-49 {
order: 5;
}
.flag-char-50 {
order: 34;
}
.flag-char-51 {
order: 51;
}
.flag-char-52 {
order: 10;
}
.flag-char-53 {
order: 12;
}
.flag-char-54 {
order: 36;
}
.flag-char-55 {
order: 1;
}
```
### Solution:
- Reconstruct the flag with the order at `css`
- Obsucated flag:
:::info
0 10 20 30 40 50
12345678901234567890123456789012345678901234567890123456
shwl_l1_twcd14}1ry4ht3neck_t3_bs{1c_hkh_tsh3he03gy_3l_hu
:::
- Got the flag with the right order: `buckeye{h0ly_sh1t_wh4t_th3_h3ck_1s_th1s_w31rd_ch4ll3ng3}`
## Result:

- I solved two challenges:
