Давайте посмотрим на сегодняшних жертв:
aHR0cDovL3d3dy5taWd1dmlkZW8uY29tL21ncy93ZWJzaXRlL3ByZC9pbmRleC5odG1s
1. Анализ шифрования паролей
На этот раз анализируются три параметра его входа в систему.Во-первых, анализ логики входа в систему и получение пакета для просмотра.
Видно, что всплывающее окно используется для входа в систему [Рисунок 1-1].Чтобы избежать вмешательства других элементов домашней страницы для захвата пакетов, мы можем открыть окно входа в систему, щелкнув правой кнопкой мыши, чтобы просмотреть исходный код фреймворка для анализа и захвата пакетов [Рисунок 1-2].
Поместите страницу с открытым исходным кодом в адресную строкуview-source:
Удалить, чтобы открыть следующую страницу [Рисунок 1-3]:
Далее, войдите с неправильной учетной записью и паролем, и вы увидите следующий пакет [Рисунок 1-4], но через открытый ключ выше я смутно догадываюсь, что параметры шифрования здесь могут быть связаны с RSA, поэтому давайте найдем местоположение шифрования пароля сначала:
поиск как обычноenpassword
, как и ожидалось, полезных результатов обнаружено не было [рис. 1-5], но элементы позиционирования можно найти по имени или по классу, так что попробуйте то же самоеJ_RsaPsd
, я нашел приличный файл [Рисунок 1-6].
Поиск в открытом файлеJ_RsaPsd
, вы можете видеть, что есть 3 связанных результата (если вы знакомы с шифрованием, вы уже можете видеть, что это шифрование RSA).J_RsaPsd
это логика шифрования пароля.
При повторной инициации запроса точка останова прерывается на строке 333 [рис. 1-8].
Давайте сначала скопируем весь код:
c.setPublic(a.result.modulus, a.result.publicExponent);
var d = c.encrypt(b.val());
b.siblings(".J_RsaPsd").val(d)
Посмотрим, что это за параметры через консоль [Рисунок 1-9].
Благодаря предыдущему захвату пакета и коду страницы JS мы пришли к выводу, что шифрование пароля является шифрованием RSA, поэтому нам нужно выяснить несколько элементов, необходимых для шифрования RSA, таких как его открытый ключ, потому что RSA — это асимметричное шифрование и использует локальное шифрование с открытым ключом.Расшифруйте с помощью закрытого ключа на сервере. Посмотрите на параметры на [Рис. 1-8], интересно, помните ли вы захват пакетов, о котором я упоминал в начале [Рис. 1-4]. Мы переключаемся на консоль-сеть, чтобы увидеть [Рисунок 1-10].
{"status":2000,"message":"","header":{},"result":{"publicExponent":"010001","modulus":"00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817"}}
Это точно такое же значение, которое мы распечатали на [Рис. 1-9]?
совет: здесьb.val()
это неправильный пароль, который я ввел.
Вот мы и нашли все необходимые для шифрования параметры.На самом деле я не считаю нужным вычитать JS, но я это знаю. .
Разве я не думаю, ты хочешь, чтобы ты думал
Так что поленитесь и протестируйте его с вычитанным ранее кодом:
-----------此处省略500行-----------
function bodyRSA()
{
//setMaxDigits(130);
var key = RSAUtils.getKeyPair("010001","","00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817");
return key
}
function get_encrypt(password) {
key = bodyRSA();
var a = RSAUtils.encryptedString(key,password)
//var b = RSAUtils.encryptedString(key,username)
console.log(a)
console.log('----------------------------------')
//console.log(b)
return a
}
get_encrypt('11111111111')
Во-вторых, проанализируйте FingerPrintDetail и fingerPrint.
Согласно [Рис. 1-5] и Рис. [1-6] в первой части зашифрованное местоположение может быть быстро обнаружено, поэтому я не буду здесь говорить о [Рис. 2-1].
Зайди и проанализируйrsaFingerprint
Видно, что в качестве шифрования пароля используется то же шифрование RSA [Рисунок 2-2], но некоторые параметры отличаются.
Тем более загадочно вот что$.fingerprint.result
и$.fingerprint.details
как оно пришло.
путем поиска$.fingerprint
Найдите его местонахождение по результатам поиска [Рисунок 2-3]
Продолжайте искать и, наконец, найдите его здесь и обнаружите, что это серия хеш-значений, сгенерированных на основе информации заголовка запроса браузера [рис. 2-4].
Если это значение не изменяет информацию заголовка запроса, то это значение является фиксированным.Если информация заголовка запроса изменена, то этот хеш необходимо повторно сгенерировать, который является информацией об отпечатке браузера.
Потому что мы просто учимся с отношением к обучению, поэтому мы не возимся, но весь этот код относительно прост и может быть вычтен.
совет: если вы хотите проанализировать алгоритм этого отпечатка, не забудьте обновить страницу перед входом в точку останова.
3. Резюме
В сочетании с предыдущими предложениями фотографии в статье отмечены порядковыми номерами, надеясь сыграть роль в сортировке идей.
Шифрование этого веб-сайта по-прежнему можно выполнить только с помощью алгоритма шифрования RSA. Алгоритм шифрования в целом относительно прост. Опытный брат может реализовать его непосредственно через библиотеку шифрования. Если вы хотите попрактиковаться в своих навыках, вы также можете попробовать его. , пока у вас больше волос, печень готова.