single quote แค่ตัวเดียวก็เป็นเรื่องได้

Written on May 29, 2008 – 11:04 am | by admin |

ขำตัวเองไม่หายเลยครับที่เจ้าตัว ‘ (Single Quote) ตัวเดียวก็ทำให้เกิดเรื่องได้ ที่ขำก็คือ ไม่ได้ดูให้ดีแบบว่ามันหลงหูหลงตาแฮ่ะ (ปกติไม่เคยลืมเลยนะ)

แล้วมันเกิดอะไรขึ้นเหรอ ???

ก็เจ้า Maxsite ที่ผมทำขึ้นมานะสิ ตัว 1.10 ที่มีเว็บบอร์ดเข้ามาด้วย เพราะมีคนทำเว็บบอร์ดส่งมาให้ผมนานมากๆแล้ว ไอ้ผมเองก็ไม่เอะใจแฮ่ะ เพราะลองๆดูใช้ได้ และไล่ๆโค๊ดดูก็โอเค

แต่…คงด้วยความมองไม่ละเอียดมากนักจึงพบว่ามีการคร่อมการรับค่าตัวแปรไม่ได้ใช้ Single Quote คร่อมไป 1 ค่า อ้าวกรรมจริงๆ

นี่เลยเขียนแบบนี้
$res[category] = $db->select_query(”SELECT category_name FROM “.TB_WEBBOARD_CAT.” WHERE id=”.$_GET[category].” “);

มองผ่านๆโค๊ดเยอะๆหลายร้อยบรรทัดคงไม่เห็นก็ได้ เพราะที่อื่นมันใส่หมดนี่หว่า 555 ใครจะคิดว่าคนที่ส่งโค๊ดมาให้จะลืมเขียน

แล้วมันทำอะไรได้บ้างหล่ะ

คำตอบคือ ทำได้หมดครับ หากรู้โครงสร้างของดาต้าเบส นั่นก็คือ หากคนที่ใช้งาน หรือ เล่น maxsite อยู่แล้วก็จะรู้ละว่าตารางมีชื่อไรบเาง ฟิลล์ชื่อไรบ้าง หากไม่รู้ก็คงต้องสุ่มๆเอา แต่หากคนที่เล่นอยู่แล้วก็ทำได้ครับ

หากเป็นผม ผมจะทำไรครับหากผมเป็นแฮกเกอร์ ผมก็คงใส่คำสั่ง SQL ลงไปให้สร้าง user ในตาราง admin โดยกำหนดสิทธิ์ให้เหมือน admin แล้วก็ login ไปแก้เนื้อหาครับ ก็เหมือนๆที่หลายๆคนที่ใช้ maxsite โดนกัน

ส่วนวิธีที่เนียนสุดๆก็คือ ใช้คำสั่ง SQL injection ลงไปเพื่อให้แสดงผล user ของ admin แล้วก็จัดแจงนำ password ที่ได้ไปถอดรหัส md5 ตามเว็บไซต์ที่เทียบรหัสผ่าน (หากรหัสผ่านง่ายๆโดนหมดครับ ดังนั้นควรตั้ง password ยากๆหน่อย)

ไม่พูดถึงเรื่องการแฮกผ่าน SQL injection ละกันเพราะมันเป็นพื้นฐานของ SQL อยู่แล้ว ลองหาอ่านตาม google คงมีเพียบ

แก้ก็ง่ายๆละ
$res[category] = $db->select_query(”SELECT category_name FROM “.TB_WEBBOARD_CAT.” WHERE id=’”.$_GET[category].”‘ “);

แค่นี้ก็หมดปัญหาละครับ

คราวหน้าคงต้องไล่ดูให้ดีๆหน่อยแว้วเรา 555

งานนี้ยกเครดิตให้คุณ Tesz ที่ไปแกะแงะ Maxsite แล้วจึงรู้ว่ามีจุดนั้นที่ทำผิดพลาดไป
ไว้งานหน้าจะขอให้ช่วยกันงัดแงะสคริปอีกครับ

  1. One Response to “single quote แค่ตัวเดียวก็เป็นเรื่องได้”

  2. By Tesz on Dec 18, 2009 | Reply

    ขออนุญาติเอา Maxsite 1.0 เป็นตัวอย่าง CMS ไทยที่โดน SQL Injection นะครับ
    พอดีว่าจะเขียนบทความลงบล็อกสักหน่อย แบบว่าวันนี้เห็นเว็บไทยที่ทำขาย มีรูเบ้อเร้อ! รับไม่ได้อย่างแรง

    ถ้าคุณแม๊กเห็นไม่สมควรอย่างไร อีเมลล์บอกผมได้ทันทีเลยครับ (ใน profile)
    ลิ้งนี้ครับ:
    http://www.lastwordz.net/blog/การป้องกัน-sql-injection.htm

You must be logged in to post a comment.

Editor's Talk!

สวัสดีคนที่หลงเดินทางเข้ามายัง Blog ของผม อาจจะด้วยความไม่ตั้งใจ หรือ ตั้งใจเข้ามาก็ตาม ก่อนอื่นผมก็ต้องขอออกตัวก่อนว่า Blog ของผมมันจะมีสาระบ้าง หรือ ไม่มีสาระเลย ก็แล้วแต่อารมณ์ช่วงไหนอยากเขียนอะไร อย่าเหมาว่า Blog ผมจะต้องมีแต่ความรู้เหมือน Blog ของคนอื่นๆ นะครับ
สำหรับ Blog นี้ ผมสามารถใช้คำพูดใดๆก็ได้ตามที่ผมเห็นสมควร เพราะมันคือ Blog ของกู(ผม) บางครั้งผมเขียนไปกระทบใครก็ขออภัยไว้ ณ. ที่นี้ด้วย ก็ไม่มีอะไรมากครับ ขอบคุณที่เข้ามาอ่าน Blog ของผมนะครับ

นายแม็ค

ค้นหา :