[BJDCTF2020]EasySearch1

2023-11-12

[BJDCTF2020]EasySearch1

0x01漏洞类型

打开题目如图所示
在这里插入图片描述
还是对CTF套路不太熟悉,拿到这种就以为是sql注入,启动sqlmap就一顿操作。

(都大。。。。。。。。。了,搞竞赛还来得及吗??????)

参考别人的wp后知道是源码泄露

这里就不给服务器增加负担了,直接搬运:

http://01289a96-1759-4f8d-ae5b-36c66c8da4fb.node4.buuoj.cn:81/index.php.swp

0x02源码分析

<?php
	ob_start();

```php
function get_hash(){
	$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
	$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
	$content = uniqid().$random;
	return sha1($content); 
}

header("Content-Type: text/html;charset=utf-8"); //应该是要求请求头要这样

***
if(isset($_POST['username']) and $_POST['username'] != '' )
{
    $admin = '6d0bc1';
    if ( $admin == substr(md5($_POST['password']),0,6)) {  //大致意思就是请求参数password的哈希值前六位=6d0bc1就得到解
        echo "<script>alert('[+] Welcome to manage system')</script>";
        $file_shtml = "public/".get_hash().".shtml";
        $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
        $text = '
        ***
        ***
        <h1>Hello,'.$_POST['username'].'</h1>
        ***
		***';
        fwrite($shtml,$text);
        fclose($shtml);
        ***
		echo "[!] Header  error ...";
    } else {
        echo "<script>alert('[!] Failed')</script>";
        
}else
{
***
}
***
?>

0x03开始解题

md5值碰撞

在这里插入图片描述

参考脚本(https://www.cnblogs.com/hell0w/p/7505507.html)

#-*- coding:utf-8 -*-
#脚本功能:生成以指定字符为开头的md5值(6位数字)

import hashlib
import random

def encryption(chars):
    return hashlib.md5(chars).hexdigest()
def generate():
    return str(random.randint(99999,1000000))
def main():
    start = "6d0bc1"
    while True:
        strs = generate()
        print "Test %s " % strs
        if encryption(strs).startswith(start):
            print "yes!"
            print "[+] %s " % strs + "%s " % encryption(strs)
            break
        else:
            print "no!"
if __name__ == '__main__':
    main()
    print '完成!'

注意:脚本用Python2跑,python3硬是没调通

还有,跑这个也是跑半天没跑出来,从https://blog.csdn.net/weixin_45642610/article/details/115689130这儿抄了一个:2020666

构造特定password值发包

username=1&password=2020666
响应包:
在这里插入图片描述

shtml哦了

此处利用Apache SSI 远程命令执行漏洞

shtml与ssi指令

百度百科:shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来。

ssi指令的作用?

显示服务器端环境变量<#echo>
将文本内容直接插入到文档中<#include>

显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)
高级SSI可设置变量使用if条件语句。

构造特定username和password值发包

1、可知,username值即为ssi命令注入点

username= &password=2020666

2、然后访问响应包给出的Url_is_here

再username= &password=2020666

访问响应包给出的Url_is_here,bingo!

0x04收获

1、这次最大的收获还是如何生成指定字符开头的md5值

2、shtml与ssi指令

参考:

1、md5前六位

https://www.cnblogs.com/hell0w/p/7505507.html

2、百度百科

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[BJDCTF2020]EasySearch1 的相关文章

  • 适用于真正复杂查询的 ORM 解决方案

    在这样复杂的情况下 人们可以 应该使用任何 ORM 解决方案吗 这可以用以下方法完成吗Propel or Doctrine 目前我正在使用 Propel 所以如果有 Propel 解决方案 我会很高兴 如果我使用 propel 进行直接查询
  • Javascript crc32 函数和 PHP crc32 与 UTF8 不匹配

    我一直在尝试从 PHP 获取 crc32 函数来匹配 javascript 生成的结果 我已经使用了 4 个不同的 javascript crc32 库 1 http www webtoolkit info javascript crc32
  • 正则表达式删除带有数字的单词

    我想删除产品名称中带有数字 参考 或小单词 2 个或更少字符 的单词 但我找不到好的正则表达式 一些例子 链式防回弹ECS 2035 应成为 链式防反弹 指南 35 厘米俄勒冈 Intenz 应该成为 俄勒冈州 Intenz 指南 Tron
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 如果用户登录,则更改引导程序中的导航栏

    我有一个标准菜单 包括 登录 和 创建用户 的选项 我想要的是 当您创建用户或登录整个导航栏菜单来更改 例如 我的用户页面 和 注销 时 我该怎么做 div div
  • 如何为 eclipse PHP 调试设置正确的 URL

    我在使用非标准 URL 在 Eclipse 中设置 PHP 调试时遇到问题 我的应用程序的 URL 必须是http xxx index php http xxx index php 这是我无法轻易改变的 我在设置调试配置来调用此 URL 时
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 发送邮件时PEAR邮件验证失败

    由于我发现 PHP 中内置的邮件功能存在安全漏洞 因此我尝试使用 PEAR 我已经在本地主机 WAMP 服务器 2 2 上安装并进行了必要的配置 但是 每次我尝试发送电子邮件时 都会显示以下消息 error authentication f
  • 来自字符串的文件大小

    我如何从 php 中的字符串中获取 文件大小 我将字符串作为 blob 放入 mysql 数据库中 并且需要存储 blob 的大小 我的解决方案是创建一个临时文件并将字符串放入临时文件中 现在我可以从 字符串 中获取文件大小 但这个解决方案
  • 无法在 PHP shell_exec() 中运行“cd”命令

    我最近在我的大学以太网连接上安装了 Apache 设置的笔记本电脑 现在 只要我有 IP 地址或主机名 我可以选择 我就可以从任何地方连接到我的计算机 现在我想创建一个基于 Web 的命令提示符 让我可以从任何设备在笔记本电脑上运行命令 一
  • PHP 生成的 XML 显示无效的 Char 值 27 消息

    我使用 PHP 库生成 XML 如下所示 dom new DOMDocument 1 0 utf 8 执行上述操作会生成一个页面 该页面在输出顶部显示一条消息 此页面包含以下错误 第 16 行第 274505 列错误 PCDATA 无效 C
  • PHP 正则表达式查找特定的阿拉伯语关键字

    我需要找到一种可靠的方法来使用 PHP 搜索阿拉伯语单词 我要搜索的文本可能是英语或阿拉伯语 因此英语单词不能破坏系统 我一直在阅读 PHP 手册和其他一些材料 并认为我有一个正确的解决方案 但我将感谢一些正则表达式专家的一些意见 这项任务
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • 将 mod-rewrite 添加到现有 PHP 网站

    我正在更新一个 php 应用程序 该应用程序当前不使用 url 重写 目的是隐藏文件扩展名 网站总体结构如下 root index php login php page1 php page2 php page3 php page4 php
  • 如何使用PHP在服务器端缩小图像?

    我有一些从服务器提取的图像 imgUrl保存图像的路径 现在我用 img src width 100 height 200 或 CSS 来缩小图像 但我想在 PHP 中执行此操作 以便将已缩放的图像提供给 DOM 有任何想法吗 Thanks
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • Zend 1.11 和 Doctrine 2 自动从现有数据库生成所需的一切

    我是 ORM 新手 我真的很想学习它 我按照本教程成功地使用 Zend 1 11 x 安装了 Doctrine 2 1 的所有类和配置 http www zendcasts com unit testing doctrine 2 entit

随机推荐

  • 最短路问题(各种方法整理)附上一个完美模板

    最短路问题 short path problem 从某点出发到达另一点所经过的路径权值相加最小的一条路径 就是最短路径 经典的也是最容易掌握的方法Floyd Dijkstra两种算法 1 Floyd算法 Floyd算法可以求解的是任意两点的
  • 快速上手 ChatGPT 进行信息检索或代码构建 (最近爆火的对话语言模型)

    文章目录 上手使用几步骤 ChatGPT 是什么 ChatGPT 能做什么 给予算法和技术学习参考 进行通用事项细节了解 国际化搜索且经过优化 实战 ChatGPT 汽车概论的论文 python快速排序 什么是分治思想 注意这里产生了上下文
  • 某系统异常流量安全分析案例

    异常分析原理 正常的基于TCP的网络流量 都是先建立TCP连接 再传输数据 然后断开连接 而网络中经常存在中毒系统 配置错误等问题 导致网络中存在单向请求现象 这些信息也会在网络流量中体现 NetInside自动发现大量连接请求 但对方没有
  • YACC工具ParserGenerator的下载和配置过程

    工具准备 parser generator http www bumblebeesoftware com downloads htm VC6 0 网上到处都是 1 parser generator的环境设置 安装好parser genera
  • RedisTemplate存储对象乱码解决

    SpringBoot 通过RedisTemplate存储对象时 key和Value乱码 特此记录 解决方法 import org springframework beans factory annotation Autowired impo
  • 深入浅出PID控制算法(二)————PID算法离散化和增量式PID算法原理及Matlab实现

    引言 上篇介绍了连续系统的PID算法 但是计算机控制是一种采样控制 他只能根据采样时刻的偏差来计算控制量 因此计算机控制系统中 必须对公式进行离散化 具体就是用求和代替积分 用向后差分来代替微分 使模拟PID离散化为数字形式的差分方程 准备
  • Java动态代理一——动态类Proxy的使用

    1 什么是动态代理 答 动态代理可以提供对另一个对象的访问 同时隐藏实际对象的具体事实 代理一般会实现它所表示的实际对象的接口 代理可以访问实际对象 但是延迟实现实际对象的部分功能 实际对象实现系统的实际功能 代理对象对客户隐藏了实际对象
  • CSS选择器总结

    元素选择器 作用 通过元素选择器可以选择页面中的所有元素 语法 标签名 如下 选中所有的P标签 p color red font size 40px ID选择器 作用 通过元素ID属性值选中唯一的一个元素 语法 id属性值 如下 选中ID为
  • 数据结构(2.1)——时间复杂度和空间复杂度计算

    前言 1 因为上一篇博客 数据结构 2 算法对于时间复杂度和空间复杂度计算的讲解太少 所以我在次增加多个案例讲解 2 上一篇已经详细介绍了 为什么我们的算法要使用复杂度这一个概念 因此 我这一篇将重点介绍 复杂度如何进行计算 时间复杂度计算
  • 使用ulisesbocchio对spring-boot项目properties配置文件信息加密

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Spring boot项目中properties文件中的密码明文不太安全 所以想到给明文加密 了解了一下 有一个依赖工具可以实现这个功能 Ulisesbocchio插件 1
  • 【机器学习】使用scikit-learn实现多元线性回归(10min阅读时长)

    Multiple Linear Regression 多元线性回归 之前有一篇简单线性回归的文章 大家感兴趣可以看看 使用scikit learn实现简单线性回归 Objectives 目标 看完这篇文章 将会 1 使用scikit lea
  • 勇士屠熊,绿军射鹿,夕阳西下,人群散尽,唯有烈火燎原势不可挡

    SpringBoot的日志 一 了解日志 1 什么是日志 2 日志的作用 二 自定义打印日志 1 实现步骤 2 日志的格式说明 三 日志级别 1 了解日志级别 2 配置日志级别 四 日志持久化 五 使用lombok进行日志输出 1 步骤 2
  • zerotier搭建moon模式

    最近发现zerotier内网穿透在和家里nas存储交互网速好像不怎么样 于是想搞个moon看看是不是会有所改善 先决条件建议 有一台云服务器 很多童鞋说要钱 刚刚白piao了一百度云的服务器 一年只要38RMB 配置CentOS7 9 1C
  • 编译cryptopp库

    1 下载源码 网址 https github com golang crypto git 2 打开里面的cryptest sln 如下图 3 打开后如下图所示 4 接着邮件crptlib属性 修改内容如下所示 release版本改为如下 对
  • 【知识点】eval() 的用法

    目录 一 基本知识 二 具体实例 三 项目应用 总结 一 基本知识 返回传入字符的表达式的结果 即将字符串当成有效的表达式 进行运算 求值并返回结果 从某种意义上说 eval就是实现list dict tuple和 str 之间的相互转换
  • cookie、session以及token的定义、区别、使用环境

    Cookie Cookie 的工作原理 由于 HTTP 是一种无状态的协议 服务器单从网络连接上无从知道客户身份 怎么办呢 就给客户端们颁发一个通行证吧 每人一个 无论谁访问都必须携带自己通行证 这样服务器就能从通行证上确认客户身份了 这就
  • 一个按键控制数码管的开和关_按键控制数码管显示

    功能 按键查询控制数码管显示的数据 定时器中断控制数码管扫描显示 所用器件 STC12C5A32S2 include config h define uint unsigned int define uchar unsigned char
  • 2021-08-12 一阶系统的频率响应 低通滤波器

  • 深入浅出PID控制算法(三)————增量式与位置式PID算法的C语言实现与电机控制经验总结

    前文对PID算法离散化和增量式PID算法原理进行来探索 之后又使用Matlab进行了仿真实验 对PID三个参数又有了更深入的认识 接下来我们来使用C语言进行PID算法实现 并且结合控制电机的项目来深入学习 1 PID 算法C 语言原代码 先
  • [BJDCTF2020]EasySearch1

    BJDCTF2020 EasySearch1 0x01漏洞类型 打开题目如图所示 还是对CTF套路不太熟悉 拿到这种就以为是sql注入 启动sqlmap就一顿操作 都大 了 搞竞赛还来得及吗 参考别人的wp后知道是源码泄露 这里就不给服务器