หน้า: [1]

« เมื่อ: 17 เมษายน 2008, 04:44:47 pm »
Global Mod.

Global Mod.

Full Member

 

กระทู้: 121

 

ความสบายใจ: 8

ออฟไลน์ ออฟไลน์

ขอบคุณ

กล่าวไป: 13

รับมา: 23

ดูรายละเอียด

15 พฤศจิกายน 2008, 03:04:39 pm

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

Injection Flaws

หมายถึง แฮกเกอร์สามารถที่จะแทรก Malicious Code หรือ คำสั่งที่แฮกเกอร์ใช้ในการเจาะระบบส่งผ่าน Web Application ไปยังระบบภายนอกที่เราเชื่อมต่ออยู่ เช่น ระบบฐานข้อมูล SQL โดยวิธี SQL Injection หรือ เรียก External Program ผ่าน shell command ของระบบปฎิบัติการ เป็นต้น

ส่วนใหญ่แล้วแฮกเกอร์จะใช้วิธีนี้ในช่วงการทำ Authentication หรือการ Login เข้าระบบผ่านทาง Web Application เช่น Web Site บางแห่งชอบใช้ "/admin" ในการเข้าสู่หน้า Admin ของ ระบบ ซึ่งเป็นช่องโหว่ให้แฮกเกอร์สามารถเดาได้เลยว่า เราใช้ http://www.mycompany.com/admin ในการเข้าไปจัดการบริหาร Web Site ดังนั้นเราจึงควรเปลี่ยนเป็นคำอื่นที่ไม่ใช่ "/admin" ก็จะช่วยได้มาก

วิธีการทำ SQL injection

ก็คือ แฮกเกอร์จะใส่ชื่อ username อะไรก็ได้แต่ password สำหรับการทำ SQL injection จะใส่เป็น Logic Statement ยกตัวอย่างเช่น ' or '1' = '1 หรือ " or "1"= "1 หรือ a' or 1=1--

โค๊ด:
$SQL = "SELECT * FROM product WHERE Password='$input'";

แต่ผู้ใช้ทำการใส่ ข้อมูลเป็น a' or 1=1--
ดังนั้น query ที่ได้จะเป้น

โค๊ด:
$SQL = "SELECT * FROM product WHERE Password='a' or 1=1--'";

จะเห็นว่าเมื่อนำไช้งานแล้ว จะสามารถเรียกดูข้อมูลได้เสมอ เนื่องจาก 1=1 เป็นจริง

สมมุติว่า มีโค้ดต่อไปนี้ใน application และ parameter "userName" ซึ่งประกอบด้วย
ชื่อผู้ใช้ ช่องโหว่แบบ SQL Injection เกิดขึ้นในโค้ดนี้:

โค๊ด:
statement :
$SQL = "SELECT * FROM users WHERE name = '" . $username. "';"

ถ้าป้อน "a'; DROP TABLE users; SELECT * FROM data WHERE name LIKE '%"
เข้าไปในส่วน "userName" จะทำให้เกิด SQL statement ต่อไปนี้

โค๊ด:
SELECT * FROM users WHERE name = 'a'; DROP TABLE users; SELECT * FROM data WHERE name LIKE '%';

ฐานข้อมูลจะเอ็กซิคิวท์ statement ตามลำดับ คือ select data, drop user table
และ select data ทำให้ผู้ใช้เว็ปสามารถดูหรือแก้ไขข้อมูลใด ๆ ที่อยู่ในฐานข้อมูล
ที่ผู้ใช้ที่เชื่อมโยงกับฐานข้อมูลสามารถอ่าน หรือแก้ไขได้

ทางแก้ไข
โค๊ด:
statement :
$SQL = "SELECT * FROM users WHERE name = '" .mysql_real_escape_string( $username). "';"

ผิดพลาดประการใดรบกวนคุณ Invisible แก้ไขด้วยนะครับ
 
บันทึกการเข้า

><((((º>ยังเหมือนพระจันทร์ดวงเดิมที่ไม่เคยเปลี่ยนไป<º))))><

My Status>>> พเนจรไปอีกครั้ง..
My Blog>>> With you All my life

« ตอบ #1 เมื่อ: 17 เมษายน 2008, 04:48:16 pm »
Admin

Admin

Full Member

 

กระทู้: 127

 

ความสบายใจ: 6

ออฟไลน์ ออฟไลน์

ขอบคุณ

กล่าวไป: 16

รับมา: 46

ดูรายละเอียด

30 พฤศจิกายน 2008, 05:05:36 am

ok ครับเข้าใจขึ้นเยอะเลย
 
บันทึกการเข้า

เพราะแสวงหามิใช่หา มิใช่เพราะโอกาส เพราะสามารถ มิใช่เพราะช่วยดังนี้แล้วลิขิตฟ้า หรือจะสู้มานะตน

รับ Modify SMF ...

« ตอบ #2 เมื่อ: 17 เมษายน 2008, 04:52:20 pm »
Global Mod.

Global Mod.

Full Member

 

กระทู้: 121

 

ความสบายใจ: 8

ออฟไลน์ ออฟไลน์

ขอบคุณ

กล่าวไป: 13

รับมา: 23

ดูรายละเอียด

15 พฤศจิกายน 2008, 03:04:39 pm

ยินดีครับ!!
 
บันทึกการเข้า

><((((º>ยังเหมือนพระจันทร์ดวงเดิมที่ไม่เคยเปลี่ยนไป<º))))><

My Status>>> พเนจรไปอีกครั้ง..
My Blog>>> With you All my life

« ตอบ #3 เมื่อ: 17 เมษายน 2008, 08:46:54 pm »
Moderators
avatar

Moderators

Hero Member

 

กระทู้: มากเกินบรรยาย

 

ความสบายใจ: 5

ออฟไลน์ ออฟไลน์

ขอบคุณ

กล่าวไป: 5

รับมา: 10

ดูรายละเอียด

09 สิงหาคม 2008, 12:54:03 pm

ขอบคุณ
 
บันทึกการเข้า



หน้า: [1]
กระโดดไป: