# Babystretchy (Web) - IrisCTF2023
![](https://i.imgur.com/FQCoRgs.png)
```
More byte mean more secure
```
#### SOURCE CODE :
```php=
<?php
$password = exec("openssl rand -hex 64");
$stretched_password = "";
for($a = 0; $a < strlen($password); $a++) {
for($b = 0; $b < 64; $b++)
$stretched_password .= $password[$a];
}
echo "Fear my 4096 byte password!\n> ";
$h = password_hash($stretched_password, PASSWORD_DEFAULT);
while (FALSE !== ($line = fgets(STDIN))) {
if(password_verify(trim($line), $h)) die(file_get_contents("flag"));
echo "> ";
}
die("No!");
?>
```
- First $password will be randomly generated 64 characters of hex.
- Next go through 2 loops, each character of $password will be repeated 64 times.
- The goal here is to find a string ($line) when entering the password_verify function that returns True. We'll get the FLAG
### Exploiting
We will be interested in the [password_hash](https://www.php.net/manual/en/function.password-hash.php) function first.
`password_hash — Creates a password hash`
![](https://i.imgur.com/Xbg7UXX.png)
![](https://i.imgur.com/YZDYkmD.png)
We can see the author uses PASSWORD_DEFAULT, which means the maximum input is only 72 bytes, the remainder will be truncated.
[You can refer here for more information](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/php-tricks-esp#password_hash-password_verify)
Ok, to test, i have simulated the following code
```php=
<?php
$password = "5aa980cbe366458bd0b36f7e0193d59e46ee49aac520ab457901d3af5d2d3058b9b3a1bc88a1e28ba96ba40189e98358f7fc46dcccdebbdb11d8c037a9c650a3";
// for example password parameter is generated like this sequence
$stretched_password = "";
for($a = 0; $a < strlen($password); $a++) {
for($b = 0; $b < 64; $b++)
$stretched_password .= $password[$a];
}
$h = password_hash($stretched_password, PASSWORD_DEFAULT);
$line = "5555555555555555555555555555555555555555555555555555555555555555aaaaaaaa";
if(password_verify(trim($line), $h)) die("True");
echo "False";
```
Thus, my mining idea will only need the first 64 characters and the next 8 characters of $password.
Now simply we will write the script to brute force
Because this post connects netcat to answer via terminal, I needed the help of the team (pwner)
```python=
import os
from pwn import *
# connect to server
r = remote('stretchy.chal.irisc.tf', 10704)
msg = r.recvuntil(b"Solution?")
x = msg.decode('utf8').split('\n')[3].strip().split(' ')
solution = os.popen("python3 pow.py " + x[4] + " " + x[5]).read()
r.sendline(str(solution))
r.recvuntil(b">")
f = open("out.txt", "r")
for x in f:
r.sendline(str(x.strip()))
log.info(str(r.recv()))
r.close()
```
![](https://i.imgur.com/lYbKxYc.png)
Attached files:
pow.py
```python=
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import base64
import os
import secrets
import socket
import sys
import hashlib
try:
import gmpy2
HAVE_GMP = True
except ImportError:
HAVE_GMP = False
sys.stderr.write("[NOTICE] Running 10x slower, gotta go fast? pip3 install gmpy2\n")
VERSION = 's'
MODULUS = 2**1279-1
CHALSIZE = 2**128
SOLVER_URL = 'https://goo.gle/kctf-pow'
def python_sloth_root(x, diff, p):
exponent = (p + 1) // 4
for i in range(diff):
x = pow(x, exponent, p) ^ 1
return x
def python_sloth_square(y, diff, p):
for i in range(diff):
y = pow(y ^ 1, 2, p)
return y
def gmpy_sloth_root(x, diff, p):
exponent = (p + 1) // 4
for i in range(diff):
x = gmpy2.powmod(x, exponent, p).bit_flip(0)
return int(x)
def gmpy_sloth_square(y, diff, p):
y = gmpy2.mpz(y)
for i in range(diff):
y = gmpy2.powmod(y.bit_flip(0), 2, p)
return int(y)
def sloth_root(x, diff, p):
if HAVE_GMP:
return gmpy_sloth_root(x, diff, p)
else:
return python_sloth_root(x, diff, p)
def sloth_square(x, diff, p):
if HAVE_GMP:
return gmpy_sloth_square(x, diff, p)
else:
return python_sloth_square(x, diff, p)
def encode_number(num):
size = (num.bit_length() // 24) * 3 + 3
return str(base64.b64encode(num.to_bytes(size, 'big')), 'utf-8')
def decode_number(enc):
return int.from_bytes(base64.b64decode(bytes(enc, 'utf-8')), 'big')
def decode_challenge(enc):
dec = enc.split('.')
if dec[0] != VERSION:
raise Exception('Unknown challenge version')
return list(map(decode_number, dec[1:]))
def encode_challenge(arr):
return '.'.join([VERSION] + list(map(encode_number, arr)))
def get_challenge(diff):
x = secrets.randbelow(CHALSIZE)
return encode_challenge([diff, x])
def solve_challenge(chal):
[diff, x] = decode_challenge(chal)
y = sloth_root(x, diff, MODULUS)
return encode_challenge([y])
def can_bypass(chal, sol):
from ecdsa import VerifyingKey
from ecdsa.util import sigdecode_der
if not sol.startswith('b.'):
return False
sig = bytes.fromhex(sol[2:])
with open("/kctf/pow-bypass/pow-bypass-key-pub.pem", "r") as fd:
vk = VerifyingKey.from_pem(fd.read())
return vk.verify(signature=sig, data=bytes(chal, 'ascii'), hashfunc=hashlib.sha256, sigdecode=sigdecode_der)
def verify_challenge(chal, sol, allow_bypass=True):
if allow_bypass and can_bypass(chal, sol):
return True
[diff, x] = decode_challenge(chal)
[y] = decode_challenge(sol)
res = sloth_square(y, diff, MODULUS)
return (x == res) or (MODULUS - x == res)
def usage():
sys.stdout.write('Usage:\n')
sys.stdout.write('Solve pow: {} solve $challenge\n')
sys.stdout.write('Check pow: {} ask $difficulty\n')
sys.stdout.write(' $difficulty examples (for 1.6GHz CPU) in fast mode:\n')
sys.stdout.write(' 1337: 1 sec\n')
sys.stdout.write(' 31337: 30 secs\n')
sys.stdout.write(' 313373: 5 mins\n')
sys.stdout.flush()
sys.exit(1)
def main():
if len(sys.argv) != 3:
usage()
sys.exit(1)
cmd = sys.argv[1]
if cmd == 'ask':
difficulty = int(sys.argv[2])
if difficulty == 0:
sys.stdout.write("== proof-of-work: disabled ==\n")
sys.exit(0)
challenge = get_challenge(difficulty)
sys.stdout.write("== proof-of-work: enabled ==\n")
sys.stdout.write("please solve a pow first\n")
sys.stdout.write("You can run the solver with:\n")
sys.stdout.write(" python3 <(curl -sSL {}) solve {}\n".format(SOLVER_URL, challenge))
sys.stdout.write("===================\n")
sys.stdout.write("\n")
sys.stdout.write("Solution? ")
sys.stdout.flush()
solution = ''
with os.fdopen(0, "rb", 0) as f:
while not solution:
line = f.readline().decode("utf-8")
if not line:
sys.stdout.write("EOF")
sys.stdout.flush()
sys.exit(1)
solution = line.strip()
if verify_challenge(challenge, solution):
sys.stdout.write("Correct\n")
sys.stdout.flush()
sys.exit(0)
else:
sys.stdout.write("Proof-of-work fail")
sys.stdout.flush()
elif cmd == 'solve':
challenge = sys.argv[2]
solution = solve_challenge(challenge)
if verify_challenge(challenge, solution, False):
sys.stderr.write("Solution: \n".format(solution))
sys.stderr.flush()
sys.stdout.write(solution)
sys.stdout.flush()
sys.stderr.write("\n")
sys.stderr.flush()
sys.exit(0)
else:
usage()
sys.exit(1)
if __name__ == "__main__":
main()
```
file out.txt
```
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000011111111
000000000000000000000000000000000000000000000000000000000000000022222222
000000000000000000000000000000000000000000000000000000000000000033333333
000000000000000000000000000000000000000000000000000000000000000044444444
000000000000000000000000000000000000000000000000000000000000000055555555
000000000000000000000000000000000000000000000000000000000000000066666666
000000000000000000000000000000000000000000000000000000000000000077777777
000000000000000000000000000000000000000000000000000000000000000088888888
000000000000000000000000000000000000000000000000000000000000000099999999
0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa
0000000000000000000000000000000000000000000000000000000000000000bbbbbbbb
0000000000000000000000000000000000000000000000000000000000000000cccccccc
0000000000000000000000000000000000000000000000000000000000000000dddddddd
0000000000000000000000000000000000000000000000000000000000000000eeeeeeee
0000000000000000000000000000000000000000000000000000000000000000ffffffff
111111111111111111111111111111111111111111111111111111111111111100000000
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111122222222
111111111111111111111111111111111111111111111111111111111111111133333333
111111111111111111111111111111111111111111111111111111111111111144444444
111111111111111111111111111111111111111111111111111111111111111155555555
111111111111111111111111111111111111111111111111111111111111111166666666
111111111111111111111111111111111111111111111111111111111111111177777777
111111111111111111111111111111111111111111111111111111111111111188888888
111111111111111111111111111111111111111111111111111111111111111199999999
1111111111111111111111111111111111111111111111111111111111111111aaaaaaaa
1111111111111111111111111111111111111111111111111111111111111111bbbbbbbb
1111111111111111111111111111111111111111111111111111111111111111cccccccc
1111111111111111111111111111111111111111111111111111111111111111dddddddd
1111111111111111111111111111111111111111111111111111111111111111eeeeeeee
1111111111111111111111111111111111111111111111111111111111111111ffffffff
222222222222222222222222222222222222222222222222222222222222222200000000
222222222222222222222222222222222222222222222222222222222222222211111111
222222222222222222222222222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222233333333
222222222222222222222222222222222222222222222222222222222222222244444444
222222222222222222222222222222222222222222222222222222222222222255555555
222222222222222222222222222222222222222222222222222222222222222266666666
222222222222222222222222222222222222222222222222222222222222222277777777
222222222222222222222222222222222222222222222222222222222222222288888888
222222222222222222222222222222222222222222222222222222222222222299999999
2222222222222222222222222222222222222222222222222222222222222222aaaaaaaa
2222222222222222222222222222222222222222222222222222222222222222bbbbbbbb
2222222222222222222222222222222222222222222222222222222222222222cccccccc
2222222222222222222222222222222222222222222222222222222222222222dddddddd
2222222222222222222222222222222222222222222222222222222222222222eeeeeeee
2222222222222222222222222222222222222222222222222222222222222222ffffffff
333333333333333333333333333333333333333333333333333333333333333300000000
333333333333333333333333333333333333333333333333333333333333333311111111
333333333333333333333333333333333333333333333333333333333333333322222222
333333333333333333333333333333333333333333333333333333333333333333333333
333333333333333333333333333333333333333333333333333333333333333344444444
333333333333333333333333333333333333333333333333333333333333333355555555
333333333333333333333333333333333333333333333333333333333333333366666666
333333333333333333333333333333333333333333333333333333333333333377777777
333333333333333333333333333333333333333333333333333333333333333388888888
333333333333333333333333333333333333333333333333333333333333333399999999
3333333333333333333333333333333333333333333333333333333333333333aaaaaaaa
3333333333333333333333333333333333333333333333333333333333333333bbbbbbbb
3333333333333333333333333333333333333333333333333333333333333333cccccccc
3333333333333333333333333333333333333333333333333333333333333333dddddddd
3333333333333333333333333333333333333333333333333333333333333333eeeeeeee
3333333333333333333333333333333333333333333333333333333333333333ffffffff
444444444444444444444444444444444444444444444444444444444444444400000000
444444444444444444444444444444444444444444444444444444444444444411111111
444444444444444444444444444444444444444444444444444444444444444422222222
444444444444444444444444444444444444444444444444444444444444444433333333
444444444444444444444444444444444444444444444444444444444444444444444444
444444444444444444444444444444444444444444444444444444444444444455555555
444444444444444444444444444444444444444444444444444444444444444466666666
444444444444444444444444444444444444444444444444444444444444444477777777
444444444444444444444444444444444444444444444444444444444444444488888888
444444444444444444444444444444444444444444444444444444444444444499999999
4444444444444444444444444444444444444444444444444444444444444444aaaaaaaa
4444444444444444444444444444444444444444444444444444444444444444bbbbbbbb
4444444444444444444444444444444444444444444444444444444444444444cccccccc
4444444444444444444444444444444444444444444444444444444444444444dddddddd
4444444444444444444444444444444444444444444444444444444444444444eeeeeeee
4444444444444444444444444444444444444444444444444444444444444444ffffffff
555555555555555555555555555555555555555555555555555555555555555500000000
555555555555555555555555555555555555555555555555555555555555555511111111
555555555555555555555555555555555555555555555555555555555555555522222222
555555555555555555555555555555555555555555555555555555555555555533333333
555555555555555555555555555555555555555555555555555555555555555544444444
555555555555555555555555555555555555555555555555555555555555555555555555
555555555555555555555555555555555555555555555555555555555555555566666666
555555555555555555555555555555555555555555555555555555555555555577777777
555555555555555555555555555555555555555555555555555555555555555588888888
555555555555555555555555555555555555555555555555555555555555555599999999
5555555555555555555555555555555555555555555555555555555555555555aaaaaaaa
5555555555555555555555555555555555555555555555555555555555555555bbbbbbbb
5555555555555555555555555555555555555555555555555555555555555555cccccccc
5555555555555555555555555555555555555555555555555555555555555555dddddddd
5555555555555555555555555555555555555555555555555555555555555555eeeeeeee
5555555555555555555555555555555555555555555555555555555555555555ffffffff
666666666666666666666666666666666666666666666666666666666666666600000000
666666666666666666666666666666666666666666666666666666666666666611111111
666666666666666666666666666666666666666666666666666666666666666622222222
666666666666666666666666666666666666666666666666666666666666666633333333
666666666666666666666666666666666666666666666666666666666666666644444444
666666666666666666666666666666666666666666666666666666666666666655555555
666666666666666666666666666666666666666666666666666666666666666666666666
666666666666666666666666666666666666666666666666666666666666666677777777
666666666666666666666666666666666666666666666666666666666666666688888888
666666666666666666666666666666666666666666666666666666666666666699999999
6666666666666666666666666666666666666666666666666666666666666666aaaaaaaa
6666666666666666666666666666666666666666666666666666666666666666bbbbbbbb
6666666666666666666666666666666666666666666666666666666666666666cccccccc
6666666666666666666666666666666666666666666666666666666666666666dddddddd
6666666666666666666666666666666666666666666666666666666666666666eeeeeeee
6666666666666666666666666666666666666666666666666666666666666666ffffffff
777777777777777777777777777777777777777777777777777777777777777700000000
777777777777777777777777777777777777777777777777777777777777777711111111
777777777777777777777777777777777777777777777777777777777777777722222222
777777777777777777777777777777777777777777777777777777777777777733333333
777777777777777777777777777777777777777777777777777777777777777744444444
777777777777777777777777777777777777777777777777777777777777777755555555
777777777777777777777777777777777777777777777777777777777777777766666666
777777777777777777777777777777777777777777777777777777777777777777777777
777777777777777777777777777777777777777777777777777777777777777788888888
777777777777777777777777777777777777777777777777777777777777777799999999
7777777777777777777777777777777777777777777777777777777777777777aaaaaaaa
7777777777777777777777777777777777777777777777777777777777777777bbbbbbbb
7777777777777777777777777777777777777777777777777777777777777777cccccccc
7777777777777777777777777777777777777777777777777777777777777777dddddddd
7777777777777777777777777777777777777777777777777777777777777777eeeeeeee
7777777777777777777777777777777777777777777777777777777777777777ffffffff
888888888888888888888888888888888888888888888888888888888888888800000000
888888888888888888888888888888888888888888888888888888888888888811111111
888888888888888888888888888888888888888888888888888888888888888822222222
888888888888888888888888888888888888888888888888888888888888888833333333
888888888888888888888888888888888888888888888888888888888888888844444444
888888888888888888888888888888888888888888888888888888888888888855555555
888888888888888888888888888888888888888888888888888888888888888866666666
888888888888888888888888888888888888888888888888888888888888888877777777
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888899999999
8888888888888888888888888888888888888888888888888888888888888888aaaaaaaa
8888888888888888888888888888888888888888888888888888888888888888bbbbbbbb
8888888888888888888888888888888888888888888888888888888888888888cccccccc
8888888888888888888888888888888888888888888888888888888888888888dddddddd
8888888888888888888888888888888888888888888888888888888888888888eeeeeeee
8888888888888888888888888888888888888888888888888888888888888888ffffffff
999999999999999999999999999999999999999999999999999999999999999900000000
999999999999999999999999999999999999999999999999999999999999999911111111
999999999999999999999999999999999999999999999999999999999999999922222222
999999999999999999999999999999999999999999999999999999999999999933333333
999999999999999999999999999999999999999999999999999999999999999944444444
999999999999999999999999999999999999999999999999999999999999999955555555
999999999999999999999999999999999999999999999999999999999999999966666666
999999999999999999999999999999999999999999999999999999999999999977777777
999999999999999999999999999999999999999999999999999999999999999988888888
999999999999999999999999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa
9999999999999999999999999999999999999999999999999999999999999999bbbbbbbb
9999999999999999999999999999999999999999999999999999999999999999cccccccc
9999999999999999999999999999999999999999999999999999999999999999dddddddd
9999999999999999999999999999999999999999999999999999999999999999eeeeeeee
9999999999999999999999999999999999999999999999999999999999999999ffffffff
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa11111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa22222222
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa33333333
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa44444444
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa55555555
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa66666666
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa77777777
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa88888888
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99999999
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadddddddd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffffffff
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00000000
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb11111111
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb22222222
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb33333333
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb44444444
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb55555555
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb66666666
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb77777777
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb88888888
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb99999999
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccc
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddddddd
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbffffffff
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc00000000
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc11111111
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc22222222
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc33333333
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc44444444
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc55555555
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc66666666
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc77777777
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc88888888
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc99999999
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaa
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddddddd
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccceeeeeeee
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccffffffff
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd11111111
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd22222222
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd33333333
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd44444444
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd55555555
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd66666666
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd77777777
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd88888888
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd99999999
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddaaaaaaaa
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddbbbbbbbb
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcccccccc
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeee
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffffff
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee11111111
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee22222222
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee33333333
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee44444444
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee55555555
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee66666666
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee77777777
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee88888888
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee99999999
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaaaaaaa
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeebbbbbbbb
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecccccccc
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11111111
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22222222
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33333333
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44444444
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff55555555
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66666666
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77777777
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88888888
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99999999
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaaaaaaaa
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbbbbbbbb
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcccccccc
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdddddddd
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeee
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
```