Tuesday, 10.17.2017, 0:57 AM
N30-G4BR13L
Main | Publisher | Registration | Login
Site menu
Section categories
Trick Blog [9]
All About Computer and Network [3]
Hacking [22]
Do you know? [3]
Zona Religi [5]
Belajar Pemrograman [0]
My Diary [1]
My Playlist

My YM Pinbox

Powered by:
Statistics

Total online: 1
Guests: 1
Users: 0
Main » Articles » Hacking

Patch bug SQLi
Ok, setelah kita beraksi dengan SQL injection,
Sekarang kita coba, untuk ngepatch bug SQLi itu sendiri.

Misalkan saja targetnya http://www.ypm-lpmb.com/news.php?nid=76
Ketika kita menambahkan quote pada akhir url, kita mendapatkan error.
Sekarang kita tahu bahwa file yang bermasalah adalah news.php dg input "nid".
Sekarang kita lihat source codenya...

if($nid)
{
$sql = "SELECT * FROM News ";
$sql .= "WHERE News_ID = $nid";
}
else
{
$sql = "SELECT * FROM News ";
$sql .= "ORDER BY News_ID DESC LIMIT 0,1";
}


Nah, kelihatan kan?? jelas bahwa disitu tidak ada filter, sehinggal attacker bisa melakukan Injecti melalui input "$nid".
Ada beberapa cara untuk patch bug SQLI, yaitu dengan memfilter karakter, maupun membatasi length pada input.
Beberapa perintahnya antara lain:

1. Agar hanya angka pada input
if (!preg_match("/^[0-9]+$/”, $nid))
{
command;
}

2. Agar tidak ada nilai minus pada input
if ($nid < 0)
{
command;
}


3. Membatasi jumlah length pada input
if (strlen($nid)>3)
{
command;
}


command bisa anda ganti sesuka anda.

Sekarang kita coba patch menggunakan cara ketiga, mengapa yang ketiga??? Bagaimana dengan cara yang pertama dan kedua??

Untuk perintah pertama, input yang diperbolehkan hanyalah angka, hal ini memang bisa digunakan untuk memfilter karakter, namun jika user mengakses news.php
maka secara otomatis "command" akan dijalankan karena tidak ada input yang masuk, seharusnya ada input masuk yang berupa angka.

Untuk cara kedua, "Agar tidak ada nilai minus pada input" dengan pengertian, saat attacker melakukan injeksi, si attacker menempatkan tanda minus "-" setelah tanda sama dengan "="
misal:news.php?nid=-9 order by 1/*
maka perintah akan dijalankan, karena -9 < 0 , $nid < 0 , namun, si attacker belum kehabisan akal, ia bisa menggukan "+", bukan "-"
misal:news.php?nid=9+order+by+1/*

Untuk cara ketiga, "Membatasi jumlah length pada input nid:" kita ingat bahwa saat si attacker melakukan injeksi, ia memasukkan perintah sql memalui url, dan perintah yang dimasukkan si attacker relativ panjang
misalkan saja:
order by, union all select, dan lain lain.

Maka dengan membatasi jumlah length, attacker tidak bisa melakukan injeksi.
Script setelah cara ketiga diterapkan:

if (strlen($nid)>3){ // jika length lebih dari 3
header ("Location:sqlinjection.html"); // halaman akan di redirect ke sqlinjection.html
}
elseif($nid) // jika ada input pada $nid
{
$sql = "SELECT * FROM News "; // server akan menampilkan data news
$sql .= "WHERE News_ID = $nid"; // dimana News_ID merupakan $nid (saat kita mengakses news.php?nid=1)
}
else // jika tidak ada input yang masuk
{
$sql = "SELECT * FROM News "; // server akan menampilkan data news
$sql .= "ORDER BY News_ID DESC LIMIT 0,1"; // secara descending, sesuai dengan News_ID (saat kita mengakses news.php)
}


Semoga bermanfaat.
Thanks to:inc0mp13te, i got inspiration about patching SQLi bug from his tutorial.
Agoes_doubleb, Lumajangcr3w member, JatimCrew, And all of my friend.

Sumber: doubleon3  http://xyber-breaker.blogspot.com/2009/06/how-to-patch-sqli-bug.html

Category: Hacking | Added by: neo-gabriel (08.05.2009)
Views: 296 | Rating: 0.0/0 |
Total comments: 0
Name *:
Email *:
Code *:
Search
Login form
My YM Status

Flag Counter
free counters
Silakan Berteriak!!
Link Back ya,
http://neo-gabriel.tk
My Friends

Copyright Neo-Gabriel © 2017