详解 [BJDCTF 2020]easy_md5

(一) 题目分析 

题目只有一个输入框  

找找提示:

查看源代码  查看数据包 找到了:

我们可以看到  hint 有一个提示点  

select * from 'admin' where password=md5($pass,true) 

(二)解决:

第一关:

很明显要用到md5绕过的相关知识

语句中是md5($pass,true) 大胆猜测这个$pass 就是我们文本框控制的输入

True 原始二进制格式 输出

可以利用md5()函数加密ffifdyop

这个字符串加密之后  得到276f722736c95d99e921722cf9ed621c

转换成字符串为   ’or’6乱码

利用转换后的字符串可以绕过语句

开整!!!!!

http://node4.anna.nssctf.cn:28312/leveldo4.php?password=ffifdyop

成功: 芜湖! 闯关成功进入下一关:

第二关:

进入:http://node4.anna.nssctf.cn:28312/levels91.php

查看页面源代码:

给出提示:

<?php

$a = $GET['a'];

$b = $_GET['b'];

if($a != $b && md5($a) == md5($b))

{    header('Location: levell14.php');
}
?>

分析代码:

a,b两个参数  

a,b要不相等  但是md5 值要相等

一眼php 弱类型比较

== 并非是强等于  

可以利用数组 传参 使得md5()函数失效

http://node4.anna.nssctf.cn:28312/levels91.php?a[]=1&b[]=2

第三关;

代码分析:

Post传递参数 又是md5()

但这次是===强等于 依然可以用数组绕过

Post参数:param1[]=1¶m2[]=2

芜湖解决问题:

(三)flag

NSSCTF{243d68c1-039a-4125-aa44-42e27679e7df}

本题目主要是利用了php 的弱类型比较  知识点

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用EasyFlash和EasyFlashLogger模块驱动外部Flash的示例工程,包括了完整的代码和Makefile文件: ```c #include "stm32f10x.h" #include "easyflash.h" #include "easyflash_logger.h" #define TAG "main" #define LOG_BUF_SIZE 1024 void main() { // 初始化EasyFlash if (ef_env_init() != EF_NO_ERR) { printf("EasyFlash init failed!\n"); return; } // 初始化EasyFlashLogger if (ef_log_init() != EF_NO_ERR) { printf("EasyFlashLogger init failed!\n"); return; } // 写入日志信息 char log_buf[LOG_BUF_SIZE]; snprintf(log_buf, LOG_BUF_SIZE, "This is a log message!"); ef_log_write(log_buf); // 读取日志信息 size_t log_size; char *log_data = ef_log_read(&log_size); printf("Log data: %s\n", log_data); // 清空日志信息 ef_log_clear(); // 关闭EasyFlashLogger ef_log_deinit(); } ``` Makefile文件: ```makefile # 交叉编译工具链 CROSS_COMPILE ?= arm-none-eabi- # 编译器 CC := $(CROSS_COMPILE)gcc # 链接器 LD := $(CROSS_COMPILE)gcc # 链接器脚本 LD_SCRIPT := ld/stm32f103c8t6.ld # C编译选项 CFLAGS := -I include -Os -std=c99 -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m3 -DPART_STM32F103C8T6 -DSTM32F10X_MD # 链接器选项 LDFLAGS := -Wl,--gc-sections -mthumb -mcpu=cortex-m3 -T $(LD_SCRIPT) # 依赖库 LIBS := -lc -lm -lnosys # 目标文件 TARGET := app.elf # 源文件 SRC := $(wildcard *.c) $(wildcard easyflash/*.c) $(wildcard easyflash_logger/*.c) # 目标文件列表 OBJS := $(patsubst %.c, %.o, $(SRC)) # 默认目标 all: $(TARGET) # 编译目标文件 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # 链接目标文件 $(TARGET): $(OBJS) $(LD) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ # 清除编译结果 clean: rm -rf $(TARGET) $(OBJS) ``` 在编译时需要指定交叉编译工具链,并且需要包含EasyFlash和EasyFlashLogger的源文件,以及指定依赖库和链接器脚本。编译完成后,可以将生成的目标文件烧录到STM32芯片中运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值