ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingsql injection ทำยังไงครับ
หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: sql injection ทำยังไงครับ  (อ่าน 5850 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
*~เก้าคุง~*
สายตรวจเสียวบอร์ด
Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 4,097



ดูรายละเอียด
« เมื่อ: 08 พฤศจิกายน 2010, 23:53:34 »

คือเค้าทำกันยังไงครับ ผมไปดูมีแต่วิธีป้องกัน แต่ไม่รู้ว่ามันใช้ยังไง แล้วมันทำอันตรายยังไงได้บ้าง
บันทึกการเข้า
sakang
สมุนแก๊งเสียว
*

พลังน้ำใจ: 13
ออฟไลน์ ออฟไลน์

กระทู้: 508



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 09 พฤศจิกายน 2010, 00:02:45 »

คือการแทรกลงในคำสั่ง sql ครับ ให้คำสั่งมันผอกเพี้ยนไป อาจจะใช้แก้ไขข้อมูล หรือเปลียนจากคำสั่งตรวจสอบให้เป็น ไม่ตรวจสอบไปซะงั้น

ประมาณนี้แหละครับ
 wanwan003
บันทึกการเข้า
postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #2 เมื่อ: 09 พฤศจิกายน 2010, 00:13:11 »

มักจะใช้ใส่ในจุดที่มีการ คิวรี่ sql ครับโดยจะใส่คำสั่ง sql แปลกๆลงไปเพื่อให้มีผลในการ return error ต่างๆออกมาทำให้รู้ค่าต่างๆของ db
บันทึกการเข้า
GigBoT
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 3,434



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 09 พฤศจิกายน 2010, 00:18:08 »

เข้าผ่าน url หรือ ทางฟอร์มกรอกข้อมูลครับ

เช่น

โค๊ด:
'or'1'='1

บลาๆๆ
บันทึกการเข้า

ทำนม - คลินิกเสริมหน้าอก PSC อันดับ 1 ของไทย
รับทำ SEO สายขาว |
รับทำ SEO
ลบรอยสัก - เลเซอร์ลบรอยสัก Pico Laser เห็นผลจริง มีรีวิวการันตี
WordPress Hosting - โฮสติ้งคุณภาพ ที่ออกแบบมาเพื่อเว็บไซต์แบบ WordPress โดนเฉพาะ
Putter™
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 421
ออฟไลน์ ออฟไลน์

กระทู้: 2,104



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 09 พฤศจิกายน 2010, 00:21:37 »

จากที่เคยได้อ่านๆมานะครับ

มันเป็นการแทรกคำสั่ง SQL ไปใน URL ครับ

select * from table ไรประมาณนี้อะครับ แล้วบางทีข้อมูลความลับก็อาจจะออกมาแสดงให้เห็นได้ครับ

บันทึกการเข้า

Ruk-Com Hosting (IAAS)
Ruk-Com Cloud (PAAS)
รีวิวโฮสติ่ง Ruk-Com  จากสมาชิก THAISEO

ไม่พอใจยินดีคืนเงินเต็มจำนวนทุกบริการ
Hikkie
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 325



ดูรายละเอียด
« ตอบ #5 เมื่อ: 09 พฤศจิกายน 2010, 00:29:21 »

concept ง่าย ๆ คืออัดฉีด sql ลงไปเพื่อให้เปลี่ยนค่าเป็น true ครับ

สมมติระบบ login ของ tsb เขียนไม่ดี ทำให้สามารถเขียน sql injection ลงไปได้

username: อะไรก็ได้ที่จะล็อคอิน
password: ' or '1' = '1 หรือ " or "1"= "1  (แนว ๆ นี้)

พอระบบมัน query ก็จะ return ค่าเป็น true และส่งผลให้ login เข้าไปได้ครับ

จริง ๆ มันเอาไป inject ตรงไหนก็ได้ที่ query ได้

ของพวกนี้แค่ concept ครับ รู้ไว้ใช่ว่า
« แก้ไขครั้งสุดท้าย: 09 พฤศจิกายน 2010, 00:30:18 โดย Hikkie » บันทึกการเข้า
skylove
ก๊วนเสียว
*

พลังน้ำใจ: 42
ออฟไลน์ ออฟไลน์

กระทู้: 322



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 09 พฤศจิกายน 2010, 01:48:09 »

concept ง่าย ๆ คืออัดฉีด sql ลงไปเพื่อให้เปลี่ยนค่าเป็น true ครับ

สมมติระบบ login ของ tsb เขียนไม่ดี ทำให้สามารถเขียน sql injection ลงไปได้

username: อะไรก็ได้ที่จะล็อคอิน
password: ' or '1' = '1 หรือ " or "1"= "1  (แนว ๆ นี้)

พอระบบมัน query ก็จะ return ค่าเป็น true และส่งผลให้ login เข้าไปได้ครับ

จริง ๆ มันเอาไป inject ตรงไหนก็ได้ที่ query ได้

ของพวกนี้แค่ concept ครับ รู้ไว้ใช่ว่า


คิดถึงอดีต  Embarrassed
บันทึกการเข้า



bird35793
คนรักเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 162



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 09 พฤศจิกายน 2010, 09:16:24 »

เหอ ๆๆๆๆ อย่างงี้ก็สามารถขโมยข้อมูลสำคัญ ๆๆๆ ไปได้อะดิคับ  Tongue
บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #8 เมื่อ: 09 พฤศจิกายน 2010, 09:18:15 »

เหอ ๆๆๆๆ อย่างงี้ก็สามารถขโมยข้อมูลสำคัญ ๆๆๆ ไปได้อะดิคับ  Tongue

เดี๋ยวนี้ส่วนใหญ่มักจะป้องกันการใส่ คิวรี่ พวกนี้แล้วครับยกเว้นคนที่เพิ่งหัดทำพวก sql บางคนอาจจะลืมป้องกัน
บันทึกการเข้า
powerbeer001
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 28
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 09 พฤศจิกายน 2010, 09:58:13 »

เป็นการ Hack ผ่านคำสั่ง SQL ครับ

เอาง่ายๆ เลยนะครับ ขั้นตอน BASIC
 1. ระบุเว็บเป้าหมาย
 2. หาช่องโหว่  อาจจะใช้ tools ก็ได้ มีเยอะ รันคำสั่งเดียวตรวจสอบให้หมด  
 3. จัดการซะ (ถ้าเจอ)

ส่วนใหญ่ที่ผมลอง Hack ผ่าน SQL Injection จะใช้ได้กับเว็บที่ใช้ asp เขียน เกือบ 100% ส่วน PHP แทบใช้่บ่ได้
« แก้ไขครั้งสุดท้าย: 09 พฤศจิกายน 2010, 09:58:51 โดย powerbeer001 » บันทึกการเข้า

TOOAds.com
บุคคลทั่วไป
« ตอบ #10 เมื่อ: 09 พฤศจิกายน 2010, 10:13:13 »

ถ้าเราจะเช็ค sql injection เราใช้คำสั่ง  ประมาณข้างล่างใช่ป่าวครับ หรือคำสั่งอื่นๆอีก wanwan017

username: อะไรก็ได้ที่จะล็อคอิน
password: ' or '1' = '1 หรือ " or "1"= "1
บันทึกการเข้า
m2studio
ก๊วนเสียว
*

พลังน้ำใจ: 32
ออฟไลน์ ออฟไลน์

กระทู้: 353



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 09 พฤศจิกายน 2010, 10:27:33 »

สมมติว่าเวลากดปุ่ม Login แล้วระบบเราใช้คำสั่งแบบนี้เข้าไป Query ข้อมูลนะ
SELECT * FROM members WHERE username='login_name' AND password='password'

แต่ตรง password ไอ่แจ้า hacker ดันใส่ เป็นแบบนี้มา A'; SHOW TABLES มันก็จะกลายเป็น
SELECT * FROM members WHERE username='login_name' AND password='A'; SHOW TABLES
โดยคำสั่งนี้ hacker ได้ใช้ ; เป็นตัวปิดคำสั่งแรก และใช้ SHOW TABLES เปิดคำสั่งใหม่ เห็นมั้ยครับ hack ง่ายมากๆ

SHOW TABLES คือคำสั่งที่ให้แสดงว่าใน DB เรามีชื่อ Table อะไรบ้างครางหน้าจะได้ใช้คำสั่ง SELECT * FROM "table_name" นั้นๆ เอาข้อมูลออกมา ตามที่ hacker อยากจะรู้

ปล. ระบบไหนไม่กัน SQL INJECTION นั่นเท่ากับว่า สามารถโดนขโมยข้อมูลได้ทั้ง DB เลยทีเดียว ^^
บันทึกการเข้า

ร้านค้าออนไลน์แห่งใหม่เปิดให้บริการแล้ว

ร้านค้าออนไลน์
Ecommerce
กระเป๋าสะพาย
กระเป๋าแฟชั่น
WPDSign
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 500
ออฟไลน์ ออฟไลน์

กระทู้: 9,060



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 09 พฤศจิกายน 2010, 10:31:36 »

หัดทำเว็บเพลินลืมจุดนี้ทุกทีเลย น่ากลัวจริงๆ
 
บันทึกการเข้า

สร้างบ้าน Modern แบบบ้านโมเดิร์น มาแรง
» ต้องการสร้างบ้านดูแบบบ้านสวยๆ แบบบ้านสองชั้น ทุกสไลต์บริการรับสร้างบ้าน ใครฝันอย่างสร้างบ้านสไตล์รีสอร์ท มีแบบบ้านสไตล์รีสอร์ท พร้อมก่อสร้าง ลงประกาศขายบ้านที่ ลงประกาศ
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 09 พฤศจิกายน 2010, 23:04:05 »

สมมติ

foo.php
โค๊ด:
<?php

$q 
'select * from linkstbl where lname = ' $_GET['n'];


เราก็อาจโดนดี โดยถูกเรียก

foo.php?n=1;delete from linkstbl


ทำให้ $q เป็น 'select * from linkstbl where lname = 1;delete from linkstbl'
บันทึกการเข้า
Mayjung007
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #14 เมื่อ: 09 พฤศจิกายน 2010, 23:16:49 »

ศึกษาอยุ่เหมือนกัน ถ้าอยากรู้ลึกกว่านี้ COmputer & Network Security แนะนำเลย เพราะพึ่งงยืมมาจากห้องสมุด หาอ่านใน se-ed ก้ได้

บันทึกการเข้า
icon
ก๊วนเสียว
*

พลังน้ำใจ: 19
ออฟไลน์ ออฟไลน์

กระทู้: 341



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 09 พฤศจิกายน 2010, 23:25:36 »

โห้ เอา แต่ แบบ ทำให้พังมาบอกกัน งัดเอาวิธีป้องกันมาแนะนำกันมั่งเด้อ wanwan019
บันทึกการเข้า

ที่สุดของการวางระบบ LAN & WiFi
m2studio
ก๊วนเสียว
*

พลังน้ำใจ: 32
ออฟไลน์ ออฟไลน์

กระทู้: 353



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 09 พฤศจิกายน 2010, 23:41:14 »

โห้ เอา แต่ แบบ ทำให้พังมาบอกกัน งัดเอาวิธีป้องกันมาแนะนำกันมั่งเด้อ wanwan019

วิธีป้องกันง่ายมากครับ เราแค่ Escape ตัวอักษรที่เป็นสัญลักษณ์ของ SQL command ออกก็เท่านั้นเองเช่น
ตัวอย่างเดิม ผมกรอก A'; SHOW TABLES

พอ Escape เสร็จก็จะกลายเป็น A\'; SHOW TABLES << สังเกต คือเปลี่ยนจาก ' เป็น \' เพื่อให้ SQL มองว่าเป็นเป็นข้อความไม่ใช่คำสั่ง
ดังนั้นจะเป็น
SELECT * FROM members WHERE username='username' AND password='A\'; SHOW TABLES'

แค่นี้เองครับ แก้ง่ายมาก แต่ต้องทำทุกจดนะครับ แต่ถ้าออกแบบการเขียนโปรแกรมมาดีถือว่าแก้ง่ายมากๆ

ปล. อย่าลืมตรวจสอบเว็บของคุณนะครับว่าแก้ SQL INJECTION แล้วหรือยัง
บันทึกการเข้า

ร้านค้าออนไลน์แห่งใหม่เปิดให้บริการแล้ว

ร้านค้าออนไลน์
Ecommerce
กระเป๋าสะพาย
กระเป๋าแฟชั่น
icon
ก๊วนเสียว
*

พลังน้ำใจ: 19
ออฟไลน์ ออฟไลน์

กระทู้: 341



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 10 พฤศจิกายน 2010, 00:00:19 »

โห้ เอา แต่ แบบ ทำให้พังมาบอกกัน งัดเอาวิธีป้องกันมาแนะนำกันมั่งเด้อ wanwan019

วิธีป้องกันง่ายมากครับ เราแค่ Escape ตัวอักษรที่เป็นสัญลักษณ์ของ SQL command ออกก็เท่านั้นเองเช่น
ตัวอย่างเดิม ผมกรอก A'; SHOW TABLES

พอ Escape เสร็จก็จะกลายเป็น A\'; SHOW TABLES << สังเกต คือเปลี่ยนจาก ' เป็น \' เพื่อให้ SQL มองว่าเป็นเป็นข้อความไม่ใช่คำสั่ง
ดังนั้นจะเป็น
SELECT * FROM members WHERE username='username' AND password='A\'; SHOW TABLES'

แค่นี้เองครับ แก้ง่ายมาก แต่ต้องทำทุกจดนะครับ แต่ถ้าออกแบบการเขียนโปรแกรมมาดีถือว่าแก้ง่ายมากๆ

ปล. อย่าลืมตรวจสอบเว็บของคุณนะครับว่าแก้ SQL INJECTION แล้วหรือยัง

ขอบคุณครับ ใครยังไม่ได้ป้องกันก็รีบๆแก้ป้องกัน กันซะนะครับ เดี่ยวเว็บที่เราหวงแหนจะแย่เอา ผมก็โดนมาแล้ว ตอนนี้กำลังปรับปรุงอย่างหนัก เว็บเก่า ก่อนหน้า ที่ทำความรู้ไม่ถึง เลยจำต้องแก้
บันทึกการเข้า

ที่สุดของการวางระบบ LAN & WiFi
thai2ads
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 1,172



ดูรายละเอียด เว็บไซต์
« ตอบ #18 เมื่อ: 10 พฤศจิกายน 2010, 00:21:22 »

เอาคำสั่งนี้ไป Run ที่ Host นะครับ
echo get_magic_quotes_gpc();
หากค่าที่ได้เป็น 1 หมายความว่า ค่าที่ส่งจากตัวแปรจะเลือกอักขระพิเศษโดยอัตโนมัติ
วิธีป้องกัน ด้วยคำสั่ง mysql_real_escape_string();
บันทึกการเข้า

รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
ออกแบบเว็บไซต์ | รับทำเว็บไซต์ |
jackies
Newbie
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 61



ดูรายละเอียด
« ตอบ #19 เมื่อ: 10 พฤศจิกายน 2010, 20:56:58 »

แอบเนียนบทความเก่าหน่อย ^^ http://www.nextproject.net/contents/default.aspx?00042

แต่บางครั้งเอาไม่อยุ่ครับโดยเฉพาะข้อมูลที่เป็น String มันมีอีกเทคนิคนึงที่ส่งตรงผ่าน URL ที่เข้ามาได้ แบบไม่มี ' เคยโดนจังๆมาครั้งนึง แบบเทรกสคริป มาไกลจากรัสเซีย หาอยู่หลายวัน ดู Log ถึงรู้ ไม่ขอเปิดเผยเพราะเป็นดาบ 2 คม
เอาเป็นว่า ถ้าเป็นไปได้ให้ Fix command บางตัวของข้อมูลที่รับเข้ามา ก่อนส่งต่อรวม Query String ใช้ Function replace ก็ได้เอา พวก "'", "--", ";--", "/*", "*/", "nchar", "varchar", "nvarchar", "ntext" ออก หรือค่ารับมาเป็นตัวเลข ก็ครอบ function พวก cint() ก่อน

ตย. asp.net ประมาณนี้

 Public Shared Function fix_sql(ByVal data As String) As String

            Dim blackList As String() = {"'", "--", ";--", "/*", "*/", "nchar", "varchar", "nvarchar", "ntext"}
            Dim whiteList As String() = {"''", "~", "~~", "/", "/", "nchar[]", "varchar[]", "nvarchar[]", "ntext[]"}

            For i As Integer = 0 To blackList.Length - 1
                If (data.IndexOf(blackList(i), StringComparison.OrdinalIgnoreCase) >= 0) Then
                    data = Regex.Replace(data, blackList(i), whiteList(i), RegexOptions.IgnoreCase)
                End If
            Next

            Return (Trim(data))
 
End Function

หรือถ้ากรองเต็มก็ใช้

'Dim blackList As String() = {"'", "--", ";--", "/*", "*/", "@@", "nchar", "varchar", "nvarchar", "ntext", "alter", "cast", "create", "cursor", "declare", "delete", "drop", "exec", "execute", "fetch", "insert", "kill", "select", "sys", "sysobjects", "syscolumns", "table"}
            'Dim whiteList As String() = {"''", "~~", ":~~", "|", "|", "[@@]", "nchar[]", "varchar[]", "nvarchar[]", "ntext[]", "[alter]", "cast[]", "[create]", "[cursor]", "[declare]", "[delete]", "[drop]", "[exec]", "[execute]", "[fetch]", "[insert]", "[kill]", "[select]", "[sys]", "[sysobjects]", "[syscolumns]", "
"}

แต่แบบนี้บางอย่างมัน replace มั่วไปหมด
บันทึกการเข้า
หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์