练习 19 Web [BJDCTF2020]Easy MD5

2024-04-04 17:28
文章标签 web 练习 19 easy md5 bjdctf2020

本文主要是介绍练习 19 Web [BJDCTF2020]Easy MD5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果你是第一批做这个题的,这道题一点也不easy

打开在前端代码里面看到,输入框输入的内容实际是’password’
在这里插入图片描述
随意输入内容,查看响应header中的内容有一句SQL代码,可知我们要让password在md5后返回值为true
在这里插入图片描述

然后尬住,开搜

MD5碰撞
总结ctf中 MD5 绕过的一些思路
ffifdyop——绕过中一个奇妙的字符串
BJDCTF2020 Easy MD5(详细
BUUCTF [BJDCTF2020]Easy MD5 详解
sql注入:md5($password,true)

根据以上信息
在其他wp和博客中得知:
md5函数在指定了true的时候,是返回的原始 16 字符二进制格式。也就是说会返回这样子的字符串:'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
然后就会拼接成:

select * from 'admin' where password=''or'6.......'

这句在MySQL 中会形成“永真”,和常规的sql注入password=''or’1逻辑一致

要注意本题中password= 后面直接就是md5()函数
返回的字符串本是'or'6.......
得到为什么不是 password='or' 6 ,而password=' 肯定会报错
原因是,md5()函数返回值的类型是字符串,会再带一对 ''
所以得到的确实是password=''or' 6........'

这要令password的值在md5加密后

在其他wp中,知道了ffifdyop这个特殊字符串,刚好符合'or'6

ffifdyop绕过原理是:
ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ’ or ‘6
而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’ ’ or ‘6xxxxx’,等价于 or 一个永真式
,因此相当于万能密码,可以绕过md5()函数。

输入ffifdyop后,得到:
在这里插入图片描述
查看前端代码,看到一段注释的代码
在这里插入图片描述

<!--
$a = $GET['a'];
$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){// wow, glzjin wants a girl friend.
-->

这个在我的练习4,我遇到过,直接输入两个数组类型并且不一样的值就能绕过
因为md5函数输入数组返回null
null =null成立
payload:?a[]='123'&b[]='1234'
成功,又看到了一组代码
在这里插入图片描述

这一组也是一样的解法,数组绕过md5
在这里插入图片描述

flag{bb709a3d-2f98-41f9-b26c-5dd79df15d4a}

这篇关于练习 19 Web [BJDCTF2020]Easy MD5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876401

相关文章

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、