argon bulletin board
Факултети => Факултет по математика и информатика => Темата е започната от: hWnd в 19.01.2007, 15:22:43
-
Интересно ми е къде е дупката в защитата тук (http://smilyanov.net/index.php?p=addcomment), че bot-ове мога да submit-ват коментари?
'Георги
-
"Дупката" е в това, че с най-обикновен HTTP парсер при положение, че се знае коя е CMS системата е напълно възможно да се напише програма, която да въвежда коментари като предварително се прочете и парсне редът за защита.
За тази цел хората са измислили защита с въвеждане на код от картинки, които по-трудно се поддават на хакове.
Познавам един човек, който преди време написа програма, която по ЕГН автоматично проверяваше в сайта на НОИ кой кога е осигурен и т.н. Сайтът на НОИ тогава имаше защита с въвеждане на код от картинка, но колегата проби защитата като анализира цветовете на различните букви и цифри в картинката и създаде шаблон за всеки знак. Положението на знаците в защитната картинка всеки път беше едно и също, и с най-обикновено налагане на шаблони защитата бе пробита!
Няма да споменавам името на човека, за да не го подгони НСБОП!
Нпоследък кодовете по защитните картинки в повечето сайтове са размазани/зачеркнати, с различен наклон/шрифт/цвят, верикално/хоризонтално изместване и т.н., но това само забавя хакерите!
Няма непробиваема защита! Има мързеливи програмисти, които не искат да я пробият... все още!
-
originalniq laf mai e :
nqma neshto koeto da ne moje da se hackne, ima neshta koito vse oshte ne sa hackanti.
-
@Иван Давидов: Съгласен съм с всичко което казваш. Обаче разчитам на това, че CMS е моя и някакси не е достатъчно разпространена...
-
Не знам защо си мисля че кода на този CMS съм го виждал някъде.
изглежда нещо от рода на
function LoadModule($module)
{
$res = mysql_query("SELECT rank,file.... FROM {$this->prefix}modules WHERE module = '{$module}'")
$data = mysql_fetch_array($res)
if ($data['rank']<=$_SESSION['rank'])
{
//i can output content
eval(file_get_contents($data['file']));
}
else
{
LoadModule('access_denied');
}
}
е има и други екстри по кода предполагам, но това си спомням от това което съм виждал някъде, а нещата наистина много приличат
-
a ve s Image e chhista rabota
tva sa shits :>
slushai sq na Java da ti q napisha ? :+P
nai Vyrlata zashtita e ne kakto kaza Ivan s cvetove i da e omazano ami pyrvo da e edin cviat primerno vinagi da sa cherni
samo che pyrvo
imash IZRAZ s Cheren shrift leko deformiran otgore napliskan s cherni cherti i etc
stava hem - presmetni izraza
hem image
hem e omazan apa ako si fanatik napraskai i drugi cvetove :>
staa mazalo :>
-
...верикално/хоризонтално изместване и т.н., но това само забавя хакерите!
Кракери, Иване. Недей смесва и ти понятията като неграмотните журналя.
Поздрави,
Николай
-
Това с генерирането и разпознаването на защитни изображения (CAPTCHA) е интересен проблем.
Аз отдавана се каня да пусна две дипломни работи (или една) на подобна тема.
Ако някой студент от трети или по-малък курс се интересува нека да ме намери в ПУ. Добре е преди това да е попрочел малко (например http://en.wikipedia.org/wiki/CAPTCHA).
PS. Интересно ще се получи да се направят две дипломни и накрая да пуснем едната срещу другата :wink:
PS2. Тук не става изобщо въпрос за квакерство или хакерство. Просто два проблема от генерирането и разпознаването на изображения.
-
PS2. Тук не става изобщо въпрос за квакерство или хакерство. Просто два проблема от генерирането и разпознаването на изображения.
По същата логика, brute force-ването на пароли вероятно е просто проблем от областта на комбинаториката? Deface-ването на сайтове е просто cross-scripting и regex exploit проблем? Не е важен методът, а за какви цели се прилага. Моята мисъл е, че поне ние като информатици трябва да внимаваме в терминологията. За тези, които не правят разлика между кракер и хакер и си има wikipedia, да му се не види.
-
Аз отдавана се каня да пусна две дипломни работи (или една) на подобна тема.
Ако някой студент от трети или по-малък курс се интересува нека да ме намери в ПУ.
Аз лично се интересувам а и чуствам че ми трябва да се захвана с някакъв различен проект че вече ще взема да изперкам .. една година правя почти едно и също всеки ден. В кои дни мога да Ви намеря и в кой кабинет ?
-
PS2. Тук не става изобщо въпрос за квакерство или хакерство. Просто два проблема от генерирането и разпознаването на изображения.
По същата логика, brute force-ването на пароли вероятно е просто проблем от областта на комбинаториката? Deface-ването на сайтове е просто cross-scripting и regex exploit проблем? Не е важен методът, а за какви цели се прилага. Моята мисъл е, че поне ние като информатици трябва да внимаваме в терминологията. За тези, които не правят разлика между кракер и хакер и си има wikipedia, да му се не види.
Разбира се че термините имат значение и трябва да се употребяват точно.
Аз имах в предвид, че дипломните работи няма да са: "Как да хакнем еди какво си..." или "Приложение на нещо си при кракването." :-)
А що се отнася до кое проблем на какво е - както добре знаем обикновенно нещата са много по-комплексни и често са сечение на няколко области (както е в случая).
-
Аз лично се интересувам а и чуствам че ми трябва да се захвана с някакъв различен проект че вече ще взема да изперкам .. една година правя почти едно и също всеки ден. В кои дни мога да Ви намеря и в кой кабинет ?
Който иска да ме намери да ми прати лично съобщение, e-mail или просто да дойде някоя сряда в новата сграда на ПУ, където до края на семестъра ще имам упражнения по "Методи на транслация" (5-та компютърна). Не е задължително да се получи дипломна работа, така че ако някой се интересува просто да дойде и да поговорим.
-
am popadna mi ot edin blog
moje pa na nqkoi da mu e polezno :
(http://www.jroller.com/resources/m/mlconnor/captcha.jpg)
generira se taka :
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.awt.*"%>
<%@ page import="java.awt.image.*"%>
<%@ page import="javax.imageio.*"%>
<%@ page import="java.awt.geom.*"%>
<%
//========================================================
// Kick Ass Captcha JSP
//
// Michael Connor 2007
//
// I just couldn't handle the thought of downloading a
// big jar and configuring some servlet.xml and having
// little to no control of anything...
// You can send in height and width parameters.
// The captcha value will be placed in the session in
// a parameter called 'captcha'
//
// Feel free to use this code and do whatever the hell
// you want to it.
//========================================================
response.setContentType("image/jpg");
try {
Color backgroundColor = Color.red;
Color borderColor = Color.red;
Color textColor = Color.white;
Color circleColor = new Color(160,160,160);
Font textFont = new Font("Arial", Font.PLAIN, 24);
int charsToPrint = 6;
int width = request.getParameter("width") != null ? Integer.parseInt(request.getParameter("width")) : 150;
int height = request.getParameter("height") != null ? Integer.parseInt(request.getParameter("height")) : 80;
int circlesToDraw = 4;
float horizMargin = 20.0f;
float imageQuality = 0.95f; // max is 1.0 (this is for jpeg)
double rotationRange = 0.7; // this is radians
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
//Draw an oval
g.setColor(Color.red);
g.fillRect(0, 0, width, height);
// lets make some noisey circles
g.setColor(circleColor);
for ( int i = 0; i < circlesToDraw; i++ ) {
int circleRadius = (int) (Math.random() * height / 2.0);
int circleX = (int) (Math.random() * width - circleRadius);
int circleY = (int) (Math.random() * height - circleRadius);
g.drawOval(circleX, circleY, circleRadius * 2, circleRadius * 2);
}
g.setColor(textColor);
g.setFont(textFont);
FontMetrics fontMetrics = g.getFontMetrics();
int maxAdvance = fontMetrics.getMaxAdvance();
int fontHeight = fontMetrics.getHeight();
// i removed 1 and l and i because there are confusing to users...
// Z, z, and N also get confusing when rotated
// 0, O, and o are also confusing...
// lowercase G looks a lot like a 9 so i killed it
// this should ideally be done for every language...
// i like controlling the characters though because it helps prevent confusion
String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYabcdefhjkmnpqrstuvwxy23456789";
char[] chars = elegibleChars.toCharArray();
float spaceForLetters = -horizMargin * 2 + width;
float spacePerChar = spaceForLetters / (charsToPrint - 1.0f);
AffineTransform transform = g.getTransform();
StringBuffer finalString = new StringBuffer();
for ( int i = 0; i < charsToPrint; i++ ) {
double randomValue = Math.random();
int randomIndex = (int) Math.round(randomValue * (chars.length - 1));
char characterToShow = chars[randomIndex];
finalString.append(characterToShow);
// this is a separate canvas used for the character so that
// we can rotate it independently
int charImageWidth = maxAdvance * 2;
int charImageHeight = fontHeight * 2;
int charWidth = fontMetrics.charWidth(characterToShow);
int charDim = Math.max(maxAdvance, fontHeight);
int halfCharDim = (int) (charDim / 2);
BufferedImage charImage = new BufferedImage(charDim, charDim, BufferedImage.TYPE_INT_ARGB);
Graphics2D charGraphics = charImage.createGraphics();
charGraphics.translate(halfCharDim, halfCharDim);
double angle = (Math.random() - 0.5) * rotationRange;
charGraphics.transform(AffineTransform.getRotateInstance(angle));
charGraphics.translate(-halfCharDim,-halfCharDim);
charGraphics.setColor(textColor);
charGraphics.setFont(textFont);
int charX = (int) (0.5 * charDim - 0.5 * charWidth);
charGraphics.drawString("" + characterToShow, charX,
(int) ((charDim - fontMetrics.getAscent())
/ 2 + fontMetrics.getAscent()));
float x = horizMargin + spacePerChar * (i) - charDim / 2.0f;
int y = (int) ((height - charDim) / 2);
//System.out.println("x=" + x + " height=" + height + " charDim=" + charDim + " y=" + y + " advance=" + maxAdvance + " fontHeight=" + fontHeight + " ascent=" + fontMetrics.getAscent());
g.drawImage(charImage, (int) x, y, charDim, charDim, null, null);
charGraphics.dispose();
}
//Write the image as a jpg
Iterator iter = ImageIO.getImageWritersByFormatName("JPG");
if( iter.hasNext() ) {
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(imageQuality);
writer.setOutput(ImageIO.createImageOutputStream(response.getOutputStream()));
IIOImage imageIO = new IIOImage(bufferedImage, null, null);
writer.write(null, imageIO, iwp);
} else {
throw new RuntimeException("no encoder found for jsp");
}
// let's stick the final string in the session
request.getSession().setAttribute("captcha", finalString.toString());
g.dispose();
} catch (IOException ioe) {
throw new RuntimeException("Unable to build image" , ioe);
}
%>
edit :
aa da popadna mi ot :
http://www.jroller.com/page/mlconnor?entry=simple_captcha_jsp
-
Браво JOKe примерчето е много интересно.
Все пак ако се намерят достатъчно добри библиотечки за разчитане на символите от такива картинки, тогава картинките ще бъдат заместени със движещи се GIF-чета на които по някое време ще се показват символите за въвеждане. Което ще въведе нова задачка закачка :-D
BorisV5
-
@Николай Манчев:
Кракери?? интересно... Ти знаеш ли, btw, кракерите с какво се занимават ?
Защото за да разпознаеш един текст не ти трябва нищо друго освен 2 .dll-та от FineReader-а, малко идея, и малко мозък да си направих четец който да разпознава текста ...
Тъй де, пишеш си 2-3 хедърни файла (за по лесно асемблерски), компилираш библиотека за динамично свързване, и чрез .длл-тата пердашиш.
Та къде е "кракерството" тука?
Да не брутфорсваш пароли случайно?
или експлойтваш нещо (та баерм хаХер да го наречеш)
Съжалявам за сарказма, но т'ва си ми е стил...
-
realno izpolzvaneto na 2ta dll-a si e crack :+P
a i se pak horata sa kazali nqma neshto koeto da ne moje da byde "precakano" neka ne izpolzvam dumi kato "hack i crack" prosto ima neshta koito vse oshte nemogat da bydat "precakani,zaobikoleni" :)
taka che vyprosa e da se filtrira % ot "horata". Vinagi syshtestvuva chovek X s idea Y koqto shte schupi tvoqta ideq Z .
Boris : haha ima ideq :) makar 4e si mislq hm.. shto Gif4e ? za gif4e ima prekaleno mnogo biblioteki a u a u napraveni ne che "Flash4e" e po dobre naprao edno Java Applet4e shte im praskam deto shte im gi vizualizira haha :>
-
Boris : haha ima ideq :) makar 4e si mislq hm.. shto Gif4e ? za gif4e ima prekaleno mnogo biblioteki a u a u napraveni ne che "Flash4e" e po dobre naprao edno Java Applet4e shte im praskam deto shte im gi vizualizira haha :>
Така ще филтрираш и голям % от потребителите които нямат идея какво е Java applet и как да го подкарат :headbang:
Иначе в гиф и флаш има идея. :rock:
-
a ve i az nenzam kvo e flash i tuka ima edna otmetka deto mi go zabranqva ta sam go zabranil ama se pak :)
-
po taia logika ima golqm % deto polzvat IE 5 ili IE 5.5 ta ne poddarjat PNG-ta dai da ne gi polzvame :)
a i kvo e tva PNG ? SVG ? DJIDJI BIDJI