code breaker 11-08-53

ลักษณะการทำงานขั้นพื้นฐานของ code เป้าหมาย

If HTTP_USER_AGENT = Player_XXX Then
     print "Send Data."
Else
     print "Don't Send Data."
End If

ผลลัพธ์จากการใช้คำสั่ง : $_SERVER['HTTP_USER_AGENT'];

บราวเซอร์ตัวที่ 1

Browser : Chrome
Data : Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4

บราวเซอร์ตัวที่ 2

Browser : Player_XXX
Data :
NSPlayer/11.00.6000.6351 WMFSDK/11.00.6000.6351
NSPlayer/11.0.6000.6351 WMFSDK/11.0
Windows-Media-Player/11.0.6000.6353
NSPlayer/11.00.6000.6351 WMFSDK/11.00.6000.6351

จากข้อมูลเบื้องต้นทำให้รู้ว่า เราสามารถหยุดคำสั่งได้

เครื่องมือที่ใช้ : php (codeigniter)

การเก็บข้อมูล :

$data['data1'] = $_SERVER['HTTP_USER_AGENT'];
$data['data2'] = date('d m Y H:i:s');
$this->db->insert('tbl_b',$data);

การหยุดคำสั่ง :

$userAgent = "Firefox (WindowsXP) - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_VERBOSE, false);
$html= curl_exec($ch);

Code ต้นแบบ อ้างอิงจาก : http://www.phpdeveloping.co.za/curl/faking-your-user-agent-with-curl.html

Code ที่แก้ไขแล้ว :

$url = 'xxx://xxx.xxx.xxx.xxx/xxx/xxx.xxx';

$userAgent = "Windows-Media-Player/11.0.6000.6353";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_VERBOSE, false);
$html= curl_exec($ch);

$this->db->insert('tbl_b',array('data1'=>$html,'data2'=>date('d m Y H:i:s')));

ผลลัพธ์ที่ได้จาก Code ที่แก้ไขแล้ว

<asx version="3">
<title>xxx xxx</title>

<entry><Duration value = "xx:xx:xx" />
     <ref href="xxx://xxx.xxx.xxx.xxx/xxx/xxx.xxx" />
     <title>xxx</title>
</entry>

<entry><Duration value = "xx:xx:xx" />
     <ref href="xxx://xxx.xxx.xxx.xxx/xxx/xxx.xxx" />
     <title>xxx</title>
</entry>
...
...
...

</asx>

การนำผลลัพธ์ไปใช้ :
มีคนแนะนำให้ใช้ flashget, idm, orbit แต่ผมใช้ real player

การเพิ่มระดับการป้องกันของโค้ดเป้าหมาย : ไม่มีความเห็น

เรื่องนี้สอนให้รู้ว่า :
1. ระดับการป้องกัน  1 หลักการ 1 ชั้น
2. เพิ่มเติมส่วน Controller และ View เข้าไป จะได้เครื่องมือถอดรหัสอีกชุดหนึ่ง
3. สามารถนำโค้ดต้นแบบไปปรับปรุง แล้วลอบใช้ resource ได้

จับ facebook-php-sdk มาใส่ใน CI กว่าจะได้เป็นตัวเป็นตน..

ยกที่ 1 ตอนแรกยกเจ้าตัว facebook.php เอาไปใส่ใน Controller เลยล่ะกัน จ๊ากก… โค้ดเยอะเกิน

ยกที่ 2 ย้ายไปอยู่ Model ล่ะกัน มีอะไรจะได้เรียกใช้ Oh Shit !! จะเรียกยังไงล่ะเนี้ย เอา APP_API กับ APP_KEY ไปไว้ใน Config แล้วเรียกมาใช้ แง่ว…เรียกใช้ยังไงว่ะเนี้ย

ยกที่ 3 ย้ายไปอยู่ Library ดีกว่า แล้วก็เริ่มต้นด้วย $this->load->library(‘facebook’); อันนี้ดูเหมือนจะ Work หึหึ

ยกที่ 4 และแล้วเจ้าตัว The URI you submitted has disallowed characters. มันโผล่มาไงเนี้ย จัดการเจ้า $config[‘permitted_uri_chars’] = ”; ปิดจ๊อบกันไปเลย

ยกที่ 5 – -” มันพาเพื่อนโผล่ออกมาอีกตัว 404 Page Not Found. The page you requested was not found. รู้สึกว่างานเข้าชุดใหญ่ล่ะ ตรงไหนมัน เรียกออกมาแล้วไม่เจอฟ่ะ เช็คดูตรง Controller ไปปิดเจ้าตัว $this->load->view(‘main_view’); ยังไม่หายอีก เป็นเพราะไป require_once ‘application/library/facebook.php’; ใน library ป่าวเนี้ย ตัดออกก็ยังไม่หาย เฮ้ย…เป็นไปได้ไงว่ะเนี้ย แล้วมันไปเรียกอะไร แล้วหาไม่เจอล่ะเนี้ย

ยกที่ 6 มันต้องผิดกันตอน Controller ไปเรียกอะไรเข้ามา แล้ว View ไม่ออกแน่ๆเลย ลองไปเปลี่ยน $route['default_controller'] = “welcome”; ซะ Double Kill……. http://facebook.ilovemysassygirl.com/xxxx มันออกมาได้อ่ะ แต่เจ้า http://apps.facebook.com/xxxxx มันเล่น 404 เฉยเลย เกิดไรขึ้น

ยกที่ 7 งานนี้ต้องให้ CI มาบอกความจริง แล้วก็ไปเปิด $config['log_threshold'] = 4; มาม่ะ มาดูว่าเกิดไรกันขึ้น

DEBUG - 2010-07-04 11:50:13 --> Config Class Initialized
DEBUG - 2010-07-04 11:50:13 --> Hooks Class Initialized
DEBUG - 2010-07-04 11:50:13 --> URI Class Initialized
ERROR - 2010-07-04 11:50:13 --> 404 Page Not Found --> fb_sig_in_iframe=1&fb_sig_iframe_key=7d0665438e81d&*/?^$#.....

โห้ย….ช่วยได้มากเลย แล้วมันคืออะไร ดูท่าแล้ว งานนี้มันเล่น uri ล้วน ๆ เลยนี้หว่า

ยกที่ 8 จัดการ $config['uri_protocol'] = “PATH_INFO”; จบข่าวเลยคับ 555+
สุดยอดจริงๆเลยกุนิ งมเข้าไปได้ยังไงว่ะเนี้ย ทึ่งในความมั่วของตัวเอง Facebook มา Hello World ใน CI แล้วคับ…เอิ๊ก ๆๆๆ

งานนี้ดูเหมือนจะต้องกลับมาแก้ใหม่แน่ ๆ นี้ขนาดแค่ Connect นะเนี้ย

หวังไว้ว่า
$config['index_page'] = ”;
กับเจ้าตัว

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

มันคงไม่เป็นไรนะ

แล้วเจ้า 3 ตัวนี้จะเล่นมันตัวไหนดีว่ะเนี้ย หึหึ

$config['base_url']	= 'http://'.$_SERVER['HTTP_HOST'].'/';

$config['base_url']	= 'http://xxxx.ilovemysassygirl.com/';

$config['base_url']	= "http://apps.facebook.com/xxxx/";

อันสุดท้ายน่าจะใช้ได้นะ ก็ขนาดเจ้า facebook มันยังใช้อันนี้เลย
แต่มันก็ยังไปเรียกอันที่ 2 มาอยู่ดีนีหว่า
อันแรกมันดูเหมือนจะเป็น AUTO นะ ก็ให้มันไปเลือกกันเอาเอง หุหุ

ส่งเมล์ใน code igniter

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

load library mail ขึ้นมาก่อนนะคับ

$this->load->library('email');

$this->email->from('webmaster@ilovemysassygirl.com', 'webmaster ( www.ilovemysassygirl.com )');
$this->email->to('new_user@gmail.com');
$this->email->cc('friend1@hotmail.com');
$this->email->bcc('friend2@hotmail.com');
$this->email->subject('ทดสอบ email ');
$this->email->message('ทดสอบการส่งอีเมล์ ด้วย code igniter ');
$this->email->send();

โค้ดทั้งหมดก็อยู่นี้แล้ว ไม่ต้องอธิบายอะไรมาก อย่างที่เห็นเลย
$this->email->from(”,”); อันนี้มี parameter 2 ตัว ตัวแรกก็เป็นเมล์ อันที่สองก็เป็นชื่อที่ต้องการใช้
…. ->to(”); อันนี้ก็ใส่เมล์ ที่ต้องการจะส่งไปให้
…. ->cc(”); อันนี้ไม่จำเป็นต้องใช้ก็ได้ ไว้ใส่เมล์ที่เราส่งถึงน่ะ ไว้เป็นพยาน อะไรประมาณนั้น
…. ->bcc(”); อันนี้ก็เหมือนกัน ไม่จำเป็นต้องใช้ก็ได้
…. ->subject(”); อันนี้ก็ หัวข้อจดหมาย
…. ->message(”); อันนี้ก็ข้อความภายใน
…. ->send(); อันนี้เป็น method ไว้ส่งเมล์ มันจะ return ค่าออกมาเป็น true ถ้าส่งสำเร็จ ถ้าส่งไม่ได้ก็จะ return ค่าออกมาเป็น false

Get Adobe Flash playerPlugin by wpburn.com wordpress themes