29 Haziran 2012 Cuma

Re : MyBB 1.6.8 Açığı // FlipR00T [MKT]

Yada boyle 1 sey ola bilir.
Simdi bildigin uzere bazi SQL-lerde post limiti olur. Yani Mesela 1 site hacklarsin ordan mass yapmak istersin index-in icinde milyon tane resim vardir yuklenmesi traffigi azaldir. Oylece MySQL down-a gider. Yani buldugun site varde 'S ile kayitli olan onun SQL hata vermesi garip degildir. Cunki asagiad 1 ornek :

Kod:
if (isset($_GET["article_id"])) { $sql->query(‘SELECT ‘ . TABLE_ARTICLES . ‘.article_date, ‘ . TABLE_ARTICLES . ‘.article_subject, ‘ . TABLE_ARTICLES . ‘.article_text, ‘ . TABLE_USERS . ‘.user_id, ‘ . TABLE_USERS . ‘.user_name FROM ‘ . TABLE_ARTICLES . ‘, ‘ . TABLE_USERS . ‘ WHERE ‘ . TABLE_ARTICLES . ‘.user_id = ‘ . TABLE_USERS . ‘.user_id AND ‘ . TABLE_ARTICLES . ‘.article_id = ‘ . $_GET["article_id"]); $table_articles = $sql->fetch();
Gorduyun gibi TABLE_ -lerde hepsi Posta girer $table_ -ye esit olmadigi icindir. Ve $_POST-dan kullanmiyoruz $_GET ile direk cagiriyoruz
Kod:
$article_id=mysql_real_escape_string($article_id);
Ve $zararsizkod=$zararlikod bu zaman zararli kod check olunur ve kontrol edilir. ID cagiririz :
Kod:
$query = mysql_query("select * from users where id=".$_GET['id']);
bu select froum user *group_concat*-dan gelir.
Kod:
SELECT * FROM users WHERE id=1 OR 1=1
ID-lleri kontrol edilir. Cok zaman bunu ASP uzerinde denediyimiz zaman 1'or'1='1' Gibi password kecisimiz olur.
Kod:
$username = $_POST['username'];
$passwd = $_POST['passwd'];
 
$query = mysql_query("select * from users where username='$username' and passwd='$passwd' ");
Burda soruyor passwd anlasimi amma orda inputa geciyor direkt yani ctlr+u -nu basib name="login -de logini bulub 'text' yazmak gibi.
Kod:
SELECT * FROM users WHERE username='a' OR 1=1 OR 'b' AND passwd='asdf'
Burda uname=a ve apsswd=asdf bunu biz yalniz MySQL-de goruruz cunki ordan inject edilmis ve md5 halinda gelmesi normaldi MySQL yuksek versionlarinda bu boyle 1 secure kurulmusdur.Bazen base64 bazende sha1 hatta MD5SQL ile bile sifrelenir. Bu sizin MySQL-e kurdugunuz sistemden aslidir.
Magic QUates :
Kod:
SELECT * FROM users WHERE username='a\' or 1=1 or \'b' AND passwd='asdf'
$_POST , $_GET , $_COOKIE ile bakilir
Kod:
$query = mysql_query("select * from users where id=".$_GET['id']);
'or'
Kod:
$query = mysql_query("select * from users where id='".$_GET['id']."'");
mysql_real_escape_string :
Kod:
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['passwd'] = mysql_real_escape_string($_POST['passwd']);
BIND :
Kod:
require_once '/var/lib/ZendFramework/Zend/Db.php';
$db = Zend_Db::factory('Mysqli', array(
    'username' => 'myuser',
    'password' => 'mypass',
    'dbname' => 'mydbname',
    'driver_options' => array(MYSQLI_INIT_COMMAND => 'SET NAMES UTF8;')
));
 
$user = $db->fetchRow("select * from users where id=?", $_GET['id']);
Orjinal Boyutunda Açmak İçin ( 855x536 ve %3$sKB ) Buraya Tıklayın

Az version-larda
Orjinal Boyutunda Açmak İçin ( 886x412 ve %3$sKB ) Buraya Tıklayın

Orjinal Boyutunda Açmak İçin ( 853x241 ve %3$sKB ) Buraya Tıklayın

Orjinal Boyutunda Açmak İçin ( 919x483 ve %3$sKB ) Buraya Tıklayın


Kod:
$sifre=$_POST['sifre']);
$sifre=mysql_query("select * from yonetici where `id`='$sifre'");
mysql_num_rows($kontrolet)
$_POST-a gelenler
Kod:
$sifre=$_POST['sifre']);
$sifre=mysql_query("select * from yonetici where id='$sifre'");
mysql_num_rows($kontrolet)
$sifre korumasi :
Kod:
$sifre=mysql_real_escape_string(htmlspecialchars($_POST['sifre']));
$sifre=mysql_query("select * from yonetici where id='$sifre'");
mysql_num_rows($kontrolet)
Yani Kanky Koruma Korumadir sadece echo 'hello wordl';
-deki ' isareni silsen hemen online 3-de Cikar . & Respect! ^_^
Avatar Fearless! ^_^

Hiç yorum yok:

Yorum Gönder