PDA

View Full Version : Hướng dẫn fix lỗi drop table



dh_notable
21-11-08, 01:47 PM
Level: easy

sau đây mình trình bày 1 cách fix drop table cho web php cách này mới nghĩ ra nhưng cũng hơi mất công cho anh em :D

thử nhé

trước hết để thực hiện drop data được thì chí ít cũng fai? dùng lệnh này
drop character-- chẳng hạn
nếu cao thủ nào đó có thể vượt qua hệ thống check ký tự đặc biệt của bạn bằng cách nào đó thì đến đây chúng ta hãy xem
drop character-- -> sẽ có 16 ký tự và thông thường các login, name, password trong mu chỉ có 10 ký tự thôi => cách giải quyết của tôi là sẽ quét tất cả các giá trị $login,..v.v nhận từ GET hoặc POST nếu các giá trị này vượt quá 1 chục ký tự thì sẽ được coi là hack data của bạn ->exit();
và không nói nhiều code đây các bạn hãy add vào web của các bạn trược khi thực hiện câu lệnh quẻy






//==============//Login check\\===========
function dk_login($login,$numb) {
$login = html_entity_decode($login, ENT_QUOTES);
if (strlen($login) > $numb) {

echo"Block query";
//code log
exit();
}
$login = htmlentities($login, ENT_QUOTES);
return $login;
}
$login=$_GET["login"];
$login=dk_login($login, 10);
//==============//pass check\\===========
function dk_pass($pass,$numb) {
$pass = html_entity_decode($pass, ENT_QUOTES);
if (strlen($pass) > $numb) {


echo"Block query";
//code log
exit();
}
$pass = htmlentities($pass, ENT_QUOTES);
return $pass;
}
$pass=$_GET["pass"];
$pass=dk_pass($pass, 10);
//=================code của bạn liên quan đến $login và $pass ở dưới này=======//



chúc vui vẻ áp dụng được cái này có khả năng 99% các bạn không bị drop data
:biggrin::biggrin:

Nylan
21-11-08, 02:03 PM
Thank pro....Test.............:D

dh_notable
21-11-08, 02:16 PM
:D sẽ hơi mất công cho việc add vào web 1 tý nhưng ai chịu bỏ thời gian ra để add nó vào web thì có thể tránh được những chuyện không may xảy ra ^^_^^

Nylan
21-11-08, 02:17 PM
:D sẽ hơi mất công cho việc add vào web 1 tý nhưng ai chịu bỏ thời gian ra để add nó vào web thì có thể tránh được những chuyện không may xảy ra ^^_^^hì mất công thật...nhưng củng để test xem thử....chứ h biết sao...=.='

@dh_notbale: bác nỏi ro các files add...để các bạn add...chứ nói thế có nhiều bạn hem bik đâu :D

tomatoes
21-11-08, 02:19 PM
Hihi bác DH Pro quá :D
........................

huydiet999
21-11-08, 02:48 PM
add vào file nào và add vào đâu thế?????

LoveBol
21-11-08, 02:57 PM
Theo như nhận định của riêng mình, ko thể fix được cho MU WEB

Vì mu web có rất nhiều lỗi. Ko riêg login

Mr.Noob
21-11-08, 03:07 PM
Cái nì dùng sao vậy bác đức....add vào đâu bác chỉ lun nhé....:))

dh_notable
21-11-08, 03:08 PM
Theo như nhận định của riêng mình, ko thể fix được cho MU WEB

Vì mu web có rất nhiều lỗi. Ko riêg login

có thể hay không thì không thể theo như nhận định của bạn được
trên đấy là ví dụ của mình về $login và $pass ( chú ý chỉ là ví dụ để ai đó có thể dựa vào đó để làm cho web của họ chứ không fai? là copy và paste vào web)
:redface:

dh_notable
21-11-08, 03:32 PM
ví dụ trang tìm kiếm tên nhân vật
code bình thường
<?


//==============Get dữ liệu từ form=========//
$name=$_GET["name"];
//=========code về sql (connect, anti sql ..v.v.)=========//
include(..???);
include(..sql);
include(..antisql...);

//==============query sql code..==============//
$sql="select top 10 name from character where name like=%$name%";
//..v.v.=====
?>

code đã được chèn
<?

//=========code chẹc length=========//
function find($name,$numb) {
$name = html_entity_decode($name, ENT_QUOTES);
if (strlen($name) > $numb) {


echo"Block query";
//code log
exit();
}
$name = htmlentities($name, ENT_QUOTES);
return $name;
}
//==============Get dữ liệu từ form=========//
$name=$_GET["name"];
$name=find($name, 10);
//=========code về sql (connect, anti sql ..v.v.)=========//
include(..???);
include(..sql);
include(..antisql...);

//==============query sql code..==============//
$sql="select top 10 name from character where name like=%$name%";
//..v.v.=====
?>

đại loại là như vậy
code này sẽ là code kiểm tra cuối cùng độ dài của $name trước khi query liên quan đến nó.

Mr.Noob
21-11-08, 03:37 PM
ví dụ trang tìm kiếm tên nhân vật

<?

//=========code chẹc length=========//
function find($name,$numb) {
$name = html_entity_decode($name, ENT_QUOTES);
if (strlen($name) > $numb) {


echo"Block query";
//code log
exit();
}
$name = htmlentities($name, ENT_QUOTES);
return $name;
}
//==============Get dữ liệu từ form=========//
$name=$_GET["name"];
$name=find($name, 10);
//=========code về sql (connect, anti sql ..v.v.)=========//
include(..???);
include(..sql);
include(..antisql...);

//==============query sql code..==============//
$sql="select top 10 name from character where name like=%$name%";
//..v.v.=====
?>
đại loại là như vậy
code này sẽ là code kiểm tra cuối cùng độ dài của $name trước khi query liên quan đến nó.
Như vậy là code lại toàn bộ các file à.Vậy thì hơi mệt roài...nhưng đành vậy....

Sữa lại chỗ $... cho phù hợp là đc hả bác.......

Nếu như ko rành về các câu lệnh dành cho Mu thì làm sao biết thay thế vào đó là từ gì hả bác :((((

dh_notable
21-11-08, 03:53 PM
ko phải code toàn bộ code mà là thêm vào trước khi query và sửa lại thôi nếu không rành thì bạn có thể tìm string GET hoặc POST trong các trang web để tìm các $ nhận dữ liệu từ các form

Không Tên
21-11-08, 03:55 PM
Các bạn tham khảo bài viết tại diễn đàn này để biết cách thức tấn công của hacker

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

+Và các bạn vào đây để Download Dotdefender và Crack về chạy nó để chống sql_injection, bảo đảm 99,99% tránh được drop data thông qua lỗi sql injection:
Topic của bạn Talovexm:

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Nylan
21-11-08, 04:02 PM
Các bạn tham khảo bài viết tại diễn đàn này để biết cách thức tấn công của hacker

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

+Và các bạn vào đây để Download Dotdefender và Crack về chạy nó để chống sql_injection, bảo đảm 99,99% tránh được drop data thông qua lỗi sql injection:
Topic của bạn Talovexm:

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Bà con đừng có down cái key talovexm post...toàn trojan không thôi...em chót dại....DM

Không Tên
21-11-08, 04:17 PM
Bà con đừng có down cái key talovexm post...toàn trojan không thôi...em chót dại....DM

Không phải Trojan đâu mà 95% các soft crack đều bị antivirus cho là troạn nên bloak hoặc del hết. Điều này quá quen thuộc ai cũng biết mà

+Thưc ra khi tìm hiểu về sqp_injection thì cũng không cần phải quá cao thủ mới drop được data, vì đại đa số muweb bị lỗi sql_injection

vietpro8x
21-11-08, 04:56 PM
hic hic Trojan em ko dám download hic hic

Son Hai
22-11-08, 02:16 AM
ko hỉu cho lắm :|

NetBanBe.Net
22-11-08, 02:26 AM
Có một cách dễ hơn nhìu. Đó là kiểm tra các ký tự của tham số được truyền đi. Chỉ cho phép những kí tự cần thiết, còn lại cấm hết.
Ví dụ:
- User, Pass: chỉ cho phép chữ và số.
- Vpoint: Chỉ cho phép số.
- Email: Kiểm tra dạng Email:
Sau đây là 3 Function cơ bản:


function kiemtra_kituso($login) {
if (eregi("[^0-9$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung so (1-9)."; exit();
}
}

function kiemtra_kitudacbiet($login) {
if (eregi("[^a-zA-Z0-9_$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung ki tu a-z, A-Z, so (1-9) va dau _."; exit();
}
}

function kiemtra_email($email) {
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Email Khong duoc su dung nhung ky tu dac biet."; exit();
}
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Dia chi Email khong dung. Xin vui long kiem tra lai."; exit();
}
}

Ví dụ:
- Khi nhận tham số từ biến: $acc

$acc=$_GET["acc"];
- Kiểm tra tính hợp lệ của biên $acc:

kiemtra_kitudacbiet($acc)
Các trường hợp khác tương tự.

dh_notable
22-11-08, 08:45 AM
Có một cách dễ hơn nhìu. Đó là kiểm tra các ký tự của tham số được truyền đi. Chỉ cho phép những kí tự cần thiết, còn lại cấm hết.
Ví dụ:
- User, Pass: chỉ cho phép chữ và số.
- Vpoint: Chỉ cho phép số.
- Email: Kiểm tra dạng Email:
Sau đây là 3 Function cơ bản:


function kiemtra_kituso($login) {
if (eregi("[^0-9$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung so (1-9)."; exit();
}
}

function kiemtra_kitudacbiet($login) {
if (eregi("[^a-zA-Z0-9_$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung ki tu a-z, A-Z, so (1-9) va dau _."; exit();
}
}

function kiemtra_email($email) {
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Email Khong duoc su dung nhung ky tu dac biet."; exit();
}
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Dia chi Email khong dung. Xin vui long kiem tra lai."; exit();
}
}

Ví dụ:
- Khi nhận tham số từ biến: $acc

$acc=$_GET["acc"];
- Kiểm tra tính hợp lệ của biên $acc:

kiemtra_kitudacbiet($acc)
Các trường hợp khác tương tự.
web nào cũng có các hàm đó để kiểm tra ký tự đặc biệt roài nhưng vẫn bị ^_^
@p/s dạo này ông mất tích ghê nhỉ vợ con roài có khác ;))

NetBanBe.Net
22-11-08, 09:17 AM
web nào cũng có các hàm đó để kiểm tra ký tự đặc biệt roài nhưng vẫn bị ^_^
@p/s dạo này ông mất tích ghê nhỉ vợ con roài có khác ;))
Web nào cũng có nhưng áp dụng không triệt để nên mới bị bug.
Phải áp dụng triệt để cho tất cả các biến nhận qua phương thức $_GET & $_POST thì đảm bảo không bao giờ bị.
Bị hack mất Pass yahoo rùi :beat_plaster: ! Hết mọi liên lạc lun hiz.... :surrender:

dh_notable
22-11-08, 09:38 AM
Web nào cũng có nhưng áp dụng không triệt để nên mới bị bug.
Phải áp dụng triệt để cho tất cả các biến nhận qua phương thức $_GET & $_POST thì đảm bảo không bao giờ bị.
Bị hack mất Pass yahoo rùi :beat_plaster: ! Hết mọi liên lạc lun hiz.... :surrender:

tất nhiên là qua các giao thức GET và POST roài cha nếu không thì có mà bị hack hết ngay từ đầu ~_~

nick mới của ông là gì thế hôm trước thấy mấy thằng vào pm nó giả danh là ông mới ghe :beat_shot:

LoveBol
22-11-08, 11:01 AM
Nói chung là xài cái tớ share bên bài "Khẩn cấp..." + với cái dòng đỏ đỏ của tungcz là no bug

YeuVo_ThuongCon
22-11-08, 11:29 AM
Nói chung một câu vậy mọi người vẫn chưa ai biết bug ở đâu :go: (bug này thì ...

Còn chuyện hack mọi người nghĩ nào thì tuỳ nhưng tôi nói 1 câu cho mọi người biết :
" NO "

Còn cái bài viết chửi tôi chính him là Muthongnhat nói
nhung ko quan tâm

YeuVo_ThuongCon
22-11-08, 11:32 AM
Nói chung là xài cái tớ share bên bài "Khẩn cấp..." + với cái dòng đỏ đỏ của tungcz là no bug

:beauty:thật không mấy cái đo các mu của thế giới họ áp dụng hết rồi mà vẫn bị :beauty: ( mà mấy mu đó á dụng cái này MU đó nó đã áp dụng từ khi nới ra wweb)

LoveBol
22-11-08, 12:03 PM
Công nhận. Nhưng hiện tại theo mình thì như thế đã tạm thời ổn định được hack qua web.

Còn hack qua GS thì mình ko đủ trình độ để nhận xét.

Mình cũng tìm ra rất nhiều chỗ bug ở Web, và cũng đang fix 1 số chỗ.

muvistal
22-11-08, 10:32 PM
Ai đã làm hoản chỉnh sửa Drop DB chưa??? Share cho anh em trên CLB với.... Đang phải OFF Mu buồn wa

LandOfPhi
22-11-08, 10:38 PM
tất nhiên là qua các giao thức GET và POST roài cha nếu không thì có mà bị hack hết ngay từ đầu ~_~

nick mới của ông là gì thế hôm trước thấy mấy thằng vào pm nó giả danh là ông mới ghe :beat_shot:
Nick Y!M của bác Vinh Ku To : masternbb

Son Hai
23-11-08, 01:25 AM
Có một cách dễ hơn nhìu. Đó là kiểm tra các ký tự của tham số được truyền đi. Chỉ cho phép những kí tự cần thiết, còn lại cấm hết.
Ví dụ:
- User, Pass: chỉ cho phép chữ và số.
- Vpoint: Chỉ cho phép số.
- Email: Kiểm tra dạng Email:
Sau đây là 3 Function cơ bản:


function kiemtra_kituso($login) {
if (eregi("[^0-9$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung so (1-9)."; exit();
}
}

function kiemtra_kitudacbiet($login) {
if (eregi("[^a-zA-Z0-9_$]", $login))
{
echo "Du lieu loi : $login . Chi duoc su dung ki tu a-z, A-Z, so (1-9) va dau _."; exit();
}
}

function kiemtra_email($email) {
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Email Khong duoc su dung nhung ky tu dac biet."; exit();
}
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
echo "Dia chi Email khong dung. Xin vui long kiem tra lai."; exit();
}
}

Ví dụ:
- Khi nhận tham số từ biến: $acc

$acc=$_GET["acc"];
- Kiểm tra tính hợp lệ của biên $acc:

kiemtra_kitudacbiet($acc)
Các trường hợp khác tương tự.
ví dụ thử đi bác ...

muvistal
23-11-08, 06:44 AM
ai hảo tâm làm giúp anh em cái, kiểu này chắc chết mất

muvistal
07-12-08, 03:14 PM
Ai đã add mã của dh_notable vào web rồi, có thể hướng dẫn config những tập tin nào ?? trong web không??? Mình mù về web quá ! Hiện đang sài web toan003. Xin giúp với,
Có cách nào Add mã của dh_notable nhanh hơn không???

Security
13-02-09, 01:22 PM
Cái này khỏi phải chống gì hết... dùng Auto Backup DB ( 1 phút Backup 1 lần )

Nếu cao thủ dạng Hacker mũ đỏ, đen, trắng Tui chấp hack Banh xác Website + Games MuOnline - Mất hết các dử liệu.. Ngoại trừ hacker đem săng lại đốt ổ cứng tui bị cháy mới buông tay đầu hàng.. :byebye:

ghvn1991
16-02-09, 03:47 PM
Sak, cho em hỏi là. Thời điểm bị hack và Auto Backup dữ liệu gần nhau thì sao ạ. Ví dụ em drop 1 db của anh và ngay lúc ấy sql của anh tự backup lại dữ liệu, thế là nó backup lun cái db bị hack à. Có gì không phải anh giải thích lại hộ em nhé, em chưa hiểu??

Security
16-02-09, 03:56 PM
Sak, cho em hỏi là. Thời điểm bị hack và Auto Backup dữ liệu gần nhau thì sao ạ. Ví dụ em drop 1 db của anh và ngay lúc ấy sql của anh tự backup lại dữ liệu, thế là nó backup lun cái db bị hack à. Có gì không phải anh giải thích lại hộ em nhé, em chưa hiểu??

nếu cho chắc ăn hơn bạn có thể Backup 1 phút 1 lần thế là xong... trong vòng thời gian 1 phút đó nếu có bị Drop thiệt hại ko đáng kể so với 30 phút hoặc 1 tiếng...

gaubongcuaanh
17-02-09, 04:10 AM
để reset + Bk các bạn đưa thủ đoạn này vào phần reset nhé

$date1 = time();
$db->Execute("BACKUP DATABASE [MuOnline] TO DISK = N'D:\BK_DATABASE\ backup Muonline $date1.bak' WITH INIT , NOUNLOAD , NAME = N'MuOnline backup', NOSKIP , STATS = 10, NOFORMAT");
$sqlinject->test($general);
$msgeneral = $db->Execute($general);
mỗi khi có người reset web tự động bk lại vào thư mục D:\BK_DATABASE
tên là backup Muonline thoi gian BK.bak
đam bảo bạn không lo ji cả