index.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. if($go)
  5. {
  6. $badCommands = [
  7. 'exec',
  8. 'zzz',
  9. 'SVC_DIRECTOR',
  10. 'SVC_STUFFTEXT',
  11. 'gl_*',
  12. 'r_*',
  13. 'hud_*',
  14. 'cl_*',
  15. 'm_*',
  16. '_restart',
  17. '_set_vid_level',
  18. '_setaddons_folder',
  19. '_setgamedir',
  20. '_sethdmodels',
  21. '_setrenderer',
  22. '_setvideomode',
  23. 'rate',
  24. 'connect',
  25. 'cmd',
  26. 'retry',
  27. 'timerefresh',
  28. 'alias',
  29. 'bind',
  30. 'abcdefghijklmnopqrstu',
  31. 'unbind',
  32. 'unbindall',
  33. 'cd',
  34. 'vzlom',
  35. 'flag',
  36. 'exec',
  37. 'exit',
  38. 'kill',
  39. 'quit',
  40. 'say',
  41. 'setinfo',
  42. 'sensitivity',
  43. 'sys_ticrate',
  44. 'writecfg',
  45. 'removedemo',
  46. 'ex_interp',
  47. 'developer',
  48. 'fps_max',
  49. 'speak_enabled',
  50. 'voice_enable',
  51. 'volume',
  52. 'mp3volume',
  53. 'motd_write',
  54. 'dem_save'
  55. ];
  56. if(isset($_POST) && !empty($_POST)){
  57. if(!isset($_FILES['file'])){
  58. sys::outjs(array('e' => 'Необходимо указать проверяемый файл.'));
  59. }
  60. $file = $_FILES['file'];
  61. if(substr($file['name'], -4) != '.sma'){
  62. sys::outjs(array('e' => 'Только .sma разрешается загружать'));
  63. }
  64. $text = file_get_contents($file['tmp_name']);
  65. $textArray = explode("\n", $text);
  66. $errors = [];
  67. foreach($textArray as $key => $str){
  68. $strNum = $key + 1;
  69. foreach($badCommands as $cmd){
  70. if(strpos($str, $cmd) !== false){
  71. $errors[$strNum] = $cmd;
  72. }
  73. }
  74. }
  75. if(!empty($errors)){
  76. $outputErrors .= '<thead><tr><th>Номер строки</th><th>Вредоносный код</th></tr></thead><tbody>';
  77. foreach($errors as $key => $msg){
  78. $outputErrors .= '<tr><td style="text-align: center;">'.$key.'</td><td style="text-align: center;">'.$msg.'</td></tr>';
  79. }
  80. $outputErrors .= '</tbody>';
  81. }
  82. else {
  83. if(!isset($outputErrors)){
  84. sys::outjs(array('s' => 'Вредоносный код не найден.'));
  85. }
  86. }
  87. sys::outjs(array('sma' => $outputErrors));
  88. }
  89. }
  90. $html->nav('Проверка плагинов на наличие бэкдоров');
  91. $html->get('check', 'sections/check');
  92. $html->pack('main');
  93. ?>