ออกตัวก่อนว่า ผมเพิ่ง ศึกษาเรื่องเหล่านี้ ดังนั้นจึงยังมีความรู้ไม่มาก
แต่ ผมว่า แนวความคิดของกระทู้นี้ อาจนำอันตรายให้หลายๆเวป
ที่ใช้ รูปภาพ มาเป็นรหัสในการเช็คก่อนที่จะ โพส comment ต่างๆ
ดังนั้น ขอความกรุณาวิเคราะห์ตามเพื่อการศึกษา หาช่องโหว่ และหาทางป้องกันนะคับ
ห้ามนำไปใช้ในทางที่ทำให้คนอื่นเดือดร้อนเป็นอันขาด
กระทู้นี้ผมจึงไม่อยากถาม เพื่อที่จะเอาคำตอบอย่างเดียว
แต่ผมต้องการ สอนวิธีคิดให้ คนที่เพิ่งเริ่มศึกษาด้วย [ดังนั้น ขออภัย ที่เนื้อความในนี้จะยาวไปหน่อย]
[hide=5]
เกริ่นนำ
:::ทุกอย่าง ต้องเกิดจากแรงจูงใจ:::
เนื่องด้วย ผมเป็นคนทำ plugins ให้บอท openkore
เข้าไปวิ่งตาม Private server ทั้งหลายที่มี npc กันบอท
แล้ววันหนึ่งผมไปเจอะ ข้อความ
เลยคิดว่า เอ๊ะ เค้าทำได้ไง ... ผมก็เลยอยากลองทำให้ได้มั่ง ... และนี่คือแรงจูใจในการตั้งกระทู้นี้ของผม
ขั้นวางแผน
:::แค่ความอยากอย่างเดียวไม่พอ ... เราจะต้องวิเคราะให้เป็นด้วย:::
หลังจาก มีแรงจูงใจแล้ว ผมก็บุก เข้าเวป pramool ครับ
ผมก็เริ่มจากตามเข้าไปในกระทู้นั้น แล้วลองเลือก reply จากนั้นก็ดูเนื้อหา็ส่วนประกอบในหน้าเวปที่เราจะต้องโพส
รวมทั้งวิเคราะถึงสิ่งที่น่าจะี่อยู่ใน code ของ followup.php3
เริ่มจาก save followup.php3 มาเก็บไว้ที่เครื่อง
แกะ code จาก followup.php3 ที่โหลดแล้วก็สร้าง form ขึ้นมาใหม่
จากการดักเวปหลักด้วยโปรแกรม Launch HTTPAnalyzer Stand-alone
แล้วจากที่แกะ src ใน followup.php3 ที่เรา save มา
ทำให้รู้ว่า จุดที่ random ภาพ มาถาม คือที่ link
http://bbs.pramool.com/webboard/checksum/i...=11875535752427
หากเรา save as.. เป็น .png เราก็จะได้ตัวเลข 4 หลักที่ โดนถาม ... ตอนแรกผมก็คิดว่า ไมมันง่ายแบบนี้
ถ้า sv ส่งเลข imgnum=[เลข 14 หลัก] มา
เราไม่จำเป็นต้องรู้ว่าตัวเลข .png 4 หลักที่ต้องตอบกลับไปนั้นมันคือเลขอะไร
เราก็แค่ส่งตัวเลข imgnum=[เลข 14 หลัก] ที่ได้มา กลับไปเลย
... แต่ มันดันไม่ง่ายอย่างนั้นซิ
เพราะหากเรา refresh หน้าเวปดังกล่าวด้วย imgnum=[เลข 14 หลัก] เดิมแต่เนี้อหาในหน้าเวปดันเปลี่ยนไป
แสดงว่า เลข 4 หลัก ต้องเปลี่ยนไปแน่นอนถ้าเรา save as.. เป็น .png เราก็จะได้ เลข 4 หลักเลขใหม่
ดังนั้นผมเลยลองดักอีก 5 ครั้ง เพื่อทดสอบ สมมุติฐาน ว่าตัวเลข imgnum=[เลข 14 หลัก] ที่ได้
จะเกี่ยวอะไรกับรูปภาพ .png ที่ปรากฏหรือไม่
จากการดัก 5 ครั้ง [เลขที่ได้จากการดัก หากนำเลขนี้ไปแทน หลัง imagenum= ก็จะไม่้ได้เลขเดิม]
11874621141015 8460
11874622639532 4910
11874622987075 1387
11874623500015 8574
11874624542310 1550
จากการ วิเคราะ 7 หลักแรก น่าจะเป็น ส่วนหัวของ file รูป
[หากเราเปิดรูปภาพด้วย text editor ช่วงบรรทัดบน จะเป็นตัวบ่งบอก ชนิดของ file]
ดังนั้น
ตัวเลข 7 หลักแรก จะต้องเป็นส่วนบ่งบอกว่าเป็น file ประเภท .png
และ 7 หลักหลังจะเป็นตัวบอกว่าความเข้มของสีที่ปรากฏจากนั้น
script ที่ sv จะต้องทำการเปลียบเทียบตรงจุดนี้ มาเป็นตัวเลข 4 หลักที่ถูกต้อง
ทำให้ผมนึกถึง script ของ perl ในหารแยกสี
... แต่โอ้ว นี่ผมต้องเขียนอังกอริทึ่ม แกะ checksum เพื่อแงะเลขในภาพ png รึนี่ ???Code:my ($b, $g, $r) = unpack("C1 C1 C1", $var{rawColor});
[หากจะทำจริงๆ ไปนั่งแงะของ rapidshare จะดีกว่า มั้ยเนี้ย = =''
... แล้วถ้ามีคนแกะได้ แล้วเอาไปประยุก เขียนสคิปยิงบอร์ดต่างๆ โอ้ว...ไม่อยากจะคิดในแง่ร้ายเลย]
เนื่องจากการวิเคาะห์นี้ เป็นหลักที่เป็นไปได้ที่สุดที่ผมคิดและเป็นการยากที่สุดที่ผมจะมานั่งเขียน
อังกอริทึ่ม แกะ checksum เอง และจากการลองคุ้ย google ผ่านๆ 1 วันก็ยังไม่เจอ script สำเร็จรูป
... เลยทำให้เริ่มตัดใจเรื่อง เขียน อังกอริทึ่ม แงะรูป
แต่เอ๊ะ แล้วทำไม มีคนทำได้ ... เค้าทำได้ไง ... มีทางอื่นที่ง่ายกว่า ...
หรือเค้าเขียนอังกอริทึ่มแงะภาพ png ได้ ??
... นี่ล่ะครับ ที่อยากจะมาขอให้แต่ละคนช่วย วิเคราะห์ ต่อ
ขั้นทดลอง
หลังจากแกะ code followup.php3 มาทำ form
ผมว่ามีจุดที่ต้องพึ่ง php หรือ perl ก็ตรง imgnum=[เลข 14 หลัก]
ซึ่งผมไม่เคยเขียน perl ติดต่อกับเวปเลย - -''
ส่วน php ก็เพิ่งจะเรียน ยังถูๆไถๆ
download --> http://upload.siamza.com/download.php?id=70362
link 2 ปล. host เดิม แต่ แกะมาให้ หากโหลดไม่ได้ เปิด link ขึ้นมา แล้วคลิก go ซ้ำอีกทีครับ --->
http://upload.siamza.com/file_http.php?lin...95607458057.zip
จุดปัญหาที่ว่าคือ
ของผม
[code]<tr>