ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

13.02.2006, 00:18
|
|
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме: 9751364
Репутация:
1847
|
|
внедрение sql
Хочу написать вот статью о технологии взлома sql.
Как-то, имхо, статей объясняющих "как" - много – а "почему" - мало.
Вот я и постараюсь объяснить это самое "почему" для тех, кому это интересно.
Итак, приступим.
Язык sql состоит из предопределённых ключевых слов и специальных символов.
Для того чтобы извлечь какие-либо данные из таблицы данных, необходимо воспользоваться оператором SELECT. При работе с web приложениями, как правило, именно этот оператор с ключевыми словами FROM и WHERE. Внедряя инструкции sql в такие запросы, можно добиться результата не предусмотренного … гм… просто непредусмотренного 
Формат выражений языка строго не определён, потому одно и тоже выражение может быть записано несколькими способами – что немного усложняет восприятие инструкций языка.
Ну, пожалуй, введение можно закончить.
Перейдём к практике
OR 1=1 (Например видео от zFailure со взломом гостевой книги (advanced guestbook 2.2))
Очевидно, что это выражение создаёт логическое выражение, результатом выражения которого всегда будет "истина". Данное выражение используется, например, в запросах аутентификации когда проверяют пользовательские имя и пароль.
Код:
sqlAuth = "SELECT userid FROM logins WHERE name='" & Username & "' AND password='" & Password & "'"
Если пользователь входит в систему с именем lexa и паролем lamer, то запрос будет выглядеть примерно так -
Код:
SELECT userid FROM logins WHERE name='lexa' AND password='lamer'
Из вышенаписанного получается, что пользователь lexa не сможет зайти в систему пока значение lamer непопадёт в БД. Но если наш Алексей умело вставит значенпие OR 1=1, то он может избавить себя от проверки пароля.
что-т типа того :
Код:
SELECT userid FROM logins WHERE name='lexa' AND password='lamer' OR 1=1
UNION Этот оператор используется совместно с SELECT для извлечения всех столбцов из таблицы. Синтаксис -
Код:
UNION ALL SELECT field FROM table WHERE condition
Может использоваться например в сообщениях об ошибках sql.
INSERT Как понятно из названия - этот оператор предназначен для добавления каких-либо значений в БД. С помощью этого оператора можно впринципе добавить нового пользователя - admin с паролем 123
Код:
INSERT INTO Users VALUES('admin', '123')
Мда... Всё таки письменно выражать свои мысли значительно тяжелее, нежели устно. хз что получилось 
Тем не менее надеюсь что это поможет хоть кому нибудь.
В заключение приведу небольшую памятку сиволов которые можно использовать в sql injection.
Завершает выражение.
Однострочный комментарий. всё что за ним - игнорируется.
Пробел
Добавляет переменную
Код:
?Param=lam&Param=mal
Присваивает переменной Param значения lam и mal
Объявление переменных. Используется для многострочных выражений.
Заключение.
Вот вижу что тут кому-то не понравилось  . А ты сам напиши 
|
|
|

13.02.2006, 19:18
|
|
Участник форума
Регистрация: 16.09.2004
Сообщений: 193
Провел на форуме: 621131
Репутация:
47
|
|
Сори но чето я не догнал 
' - это же не всегда завершает выражение, везде по разному...
-- - только для mssql
И про остальное тоже...
SELECT userid FROM logins WHERE name='lexa' AND password='lamer' OR 1=1
тут же проще ?name=1' or 1=1/*
|
|
|

13.02.2006, 20:11
|
|
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме: 9751364
Репутация:
1847
|
|
' virgoz. Насчёт кавычки? Попрошу поподробнее. Я что-то тебя не понимаю 0_0
А про комментарии - да. Я говорил именно о Microsoft sql server.
|
|
|

13.02.2006, 22:02
|
|
Участник форума
Регистрация: 16.09.2004
Сообщений: 193
Провел на форуме: 621131
Репутация:
47
|
|
Union select * from bla where id=$e, где $e=1'
Ну вот тут допустим эта кавычка ниче не закроет.
|
|
|
Тулзу простенькую накодил. |

27.12.2007, 12:04
|
|
Новичок
Регистрация: 03.04.2007
Сообщений: 17
Провел на форуме: 90770
Репутация:
11
|
|
Тулзу простенькую накодил.
Вот небольшую тулзу накодил, для облегчения взлома серверов, юзая скулю, где фильтруются / слешируются кавычки.
(формирует из строки вида /etc/passwd строку вида char(47,101,116,99,47,112,97,115,115,119,100) )
простенькая, но полезная.
качать тут http://ifolder.ru/4738224
Последний раз редактировалось MartS; 27.12.2007 в 12:12..
|
|
|

27.12.2007, 12:16
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
hack-shop.org.ru/code.php
Последний раз редактировалось Spyder; 27.12.2007 в 12:19..
|
|
|

27.12.2007, 12:21
|
|
Новичок
Регистрация: 03.04.2007
Сообщений: 17
Провел на форуме: 90770
Репутация:
11
|
|
ну а так локально)
(тот линк раньше не видел)
|
|
|

27.12.2007, 12:37
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
PHP код:
<?
$string='/etc/passwd';
$str='char(';
for($i=0;$i<strlen($string);$i++)
{
$i==(strlen($string)-1)?$str.=ord($string[$i]):$str.=ord($string[$i]).",";
}
$str.=')';
echo($str);
?>
|
|
|

27.12.2007, 12:40
|
|
Новичок
Регистрация: 03.04.2007
Сообщений: 17
Провел на форуме: 90770
Репутация:
11
|
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
edit2.Text :='';
edit2.Text :='char(';
for i:=1 to length(edit1.Text) do
begin
edit2.Text :=edit2.Text+ inttostr((ord(edit1.text[i])));
if i <> length(edit1.Text) then edit2.Text:=edit2.text+',';
end;
edit2.Text:=edit2.text+')';
end;
end.
вот сурс дельфинский
|
|
|

27.12.2007, 16:20
|
|
Постоянный
Регистрация: 01.01.2007
Сообщений: 796
Провел на форуме: 2693408
Репутация:
861
|
|
http://webfile.ru/1658613 имхо самая удобная тема (спс какому-то мемберу, кто-то выкладывал...не помню)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|