从这道题学到了挺多

一打开题目就是登陆页面,遂扫描文件检测是否存在文件泄露

用dirsearch扫出了robots.txt,.DS_Store和其他php。DS_Store没有可用信息(buuoj的题扫描一定不能太快。。。。429警告)

打开robots.txt,要素察觉,有备份文件。

逐个尝试,发现了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);
addslashes函数会在预定字符前加\,如果我们在id参数传入\0,经过addslashes函数处理就会变为\\0,然而后面的str_replace把\0置换为空,那
么我们插入的\\0就会变成\,把id参数后的'转义。此时我们的sql语句如下
select * from images where id='or path=''

可以在path参数进行注入,注释掉后面的单引号并用and 1=1构造注入

select * from images where id='or path='and 1=1--+'

也可以利用path重新构造id进行注入

select * from images where id='or path=' or id=1--+'

脚本如下

注入这里搞了半天,密码比较长。把n的范围设到20才爆出完整密码

因为手工太慢了所以尝试了sqlmap

sqlmap牛逼!!不过这里有个坑。。。。\0前要加\转义让\失去转义功能,可以用v参数查看注入的payload来调整语句

查到用户名和密码登录之后发现上传点

随便传个文件,返回结果里显示有上传路径

打开之后发现是日志文件,用来记录上传的文件名

接下来思路就很清晰了,这是个php文件,并且会记录文件名。我们只需要把文件名改成一句话。上传之后就会被解析成php。一般的一句话会被拦截,因为出现了"php"。我们可以采用短标签<?=  ?>代替<?php  ?>

蚁剑连接,flag在根目录

BUUCTF-web Easyweb的更多相关文章

  1. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  2. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...

  3. 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  4. buuctf—web—高明的黑客

    打开靶机,看到如下界面 于是打开www.tar.gz 下载后发现是一个放有大量php文件的文件夹 看了大佬的wp后明白了是fuzzing 附上大佬的脚本 import os import re imp ...

  5. buuctf—web—Easy Calc

    启动靶机,查看网页源码,发现关键字 $("#content").val() 是什么意思: 获取id为content的HTML标签元素的值,是JQuery,     ("# ...

  6. BUUCTF WEB-WP(3)

    BUUCTF WEB 几道web做题的记录 [ACTF2020 新生赛]Exec 知识点:exec命令执行 这题最早是在一个叫中学生CTF平台上看到的类似,比这题稍微要复杂一些,多了一些限制(看看大佬 ...

  7. BUUCTF刷题记录(Web方面)

    WarmUp 首先查看源码,发现有source.php,跟进看看,发现了一堆代码 这个原本是phpmyadmin任意文件包含漏洞,这里面只不过是换汤不换药. 有兴趣的可以看一下之前我做的分析,http ...

  8. [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)

    简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escap ...

  9. buuctf刷题之旅—web—EasySQL

    打开环境,发现依旧是sql注入 GitHub上有源码(https://github.com/team-su/SUCTF-2019/tree/master/Web/easy_sql) index.php ...

  10. buuctf刷题之旅—web—随便注

    打开环境 根据提示应该是sql注入 查看数据库名,和数据表 1';show databases;# 1';show tables;# 查看表内字段(1';desc `1919810931114514` ...

随机推荐

  1. 入门大数据---Hadoop是什么?

    简单概括:Hadoop是由Apache组织使用Java语言开发的一款应对大数据存储和计算的分布式开源框架. Hadoop的起源 2003-2004年,Google公布了部分GFS和MapReduce思 ...

  2. Python实用笔记 (23)面向对象高级编程——使用__slots__

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object): pa ...

  3. eclipse在debug模式下鼠标移动到变量上不显示值的问题

    在eclipse中调试时,鼠标移动到变量上不显示值,使用ctrl+shift+i,或者通过配置达到目的: Window->Preferences->Java->Editor-> ...

  4. GIT更换连接方式

    1-使用 git remote -v 查看对应的克隆地址: git remote -v origin https://github.com/username/repository.git (fetch ...

  5. WSL中文本地化

    WSL中文本地化 Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层.它是由微软与Canon ...

  6. grunt之easy demo

    首先安装grunt-cli cnpm install -g grunt-cli 接下来创建package.json,内容如下 {        "name": "demo ...

  7. js 图片压缩上传(base64位)以及上传类型分类

    一.input file上传类型 1.指明只需要图片 <input type="file" accept='image/*'> 2.指明需要多张图片 <input ...

  8. 状压DP之LGTB 与序列

    题目 思路 这道题竟然是状压DP,本人以为是数论,看都没看就去打下一题的暴力了,哭 \(A_i\)<=30,所以我们只需要考虑1-58个数,再往后选的话还不如选1更优,注意,1是可以重复选取的, ...

  9. Java数组的定义与使用

    一.数组概念 可以将多个同一数据类型的数据,存储到同一个容器中 1. 格式 数据类型[] 数组名=new 数据类型[元素个数] "数据类型"表示该数组中可以存放哪一类型的数据 &q ...

  10. SCSS笔记

    SASS是成熟,稳定,强大的 CSS预处理器 ,而 SCSS 是SASS3版本当中引入的新语法特性,完全兼容CSS3的同时继承了CSS强大的动态功能. CSS书写代码规模较大的web应用时,容易造成选 ...