【pwnable.kr】0x02-collision Writeup

news2024/9/23 11:25:08

题目描述

在这里插入图片描述
在这里插入图片描述

解法

拉取文件

scp -P2222 col@pwnable.kr:col .
scp -P2222 col@pwnable.kr:col.c .

分析源码

#include <stdio.h>
#include <string.h>

// hashcode值
unsigned long hashcode = 0x21DD09EC;

// 返回res,对main函数中传参进行“加密”变换操作
unsigned long check_password(const char* p){
	int* ip = (int*)p; // *ip把*p强转为整型,前4个字节
	int i;
	int res=0;
    // 20个字节总共分为5次
	for(i=0; i<5; i++){
		res += ip[i];
	}
	return res;
}

int main(int argc, char* argv[]){
    // argc表示传参数,程序的名称本身被视为第一个参数,存储在argv[0]中
    // 此题需要传入一个参数
	if(argc<2){
		printf("usage : %s [passcode]\n", argv[0]);
		return 0;
	}
    
    // 传入参数长度需要等于20
	if(strlen(argv[1]) != 20){
		printf("passcode length should be 20 bytes\n");
		return 0;
	}

    // 传入的参数经过加密变换需要等于0x21DD09EC
	if(hashcode == check_password( argv[1] )){
		system("/bin/cat flag");
		return 0;
	}
	else
		printf("wrong passcode.\n");
	return 0;
}

阅读源码后,执行样例测试

输入2个参数 / 1个参数,程序输出如下

在这里插入图片描述

调试分析(可跳过)

先随意输入一个值,进一步分析

-g生成含调试信息的可执行文件

在这里插入图片描述

lldb调试

安装lldb
apt-get update
apt-get install lldb

# 输入abcdabcdabcdabcdabcd
lldb a.out abcdabcdabcdabcdabcd

# 在check_password第一行
(lldb) b 6
# 运行,传递参数,到断点处暂停
(lldb) r
# 单步执行printf("%d\n", *ip);step in
(lldb) s
#  检查内存,即检查ip指向的内存内容
#  整型为4字节,又因为机器为小端序,低位字节在低地址,即abcd对应0x64636261(从左往右地址增大),对应整数为1684234849
(lldb) x ip
# 打印指针ip指向的内容
(lldb) p *ip

在这里插入图片描述

特殊值构造

逆向“加密变换算法”check_password()分析,题目需要传入一个长度为20的字符串,经过五次累加之后等于0x21DD09EC,即可system("/bin/cat flag");

满足20个字节条件,且五次累加=0x21DD09EC,做除法
0x21DD09EC / 5
在这里插入图片描述
hex(0x21DD09EC - 0x6C5CEC8 * 4),余数为0x6c5cecc
在这里插入图片描述
查看靶机为小端序( LSB executable
在这里插入图片描述
所以输入的低位字节在低地址,高位字节在高地址
0x6C5CEC8 => \xc8\xce\xc5\x06
0x6c5cecc => \xcc\xce\xc5\x06

即shell构造为

./col `python -c 'print "\xc8\xce\xc5\x06" * 4 +"\xcc\xce\xc5\x06"'`

直接在靶机shell上执行payload获取flag

在这里插入图片描述

pwntools-EXP(假设靶机无python环境)

#!/bin/python
from pwn import *

payload = p32(0x6c5cec8) * 4 + p32(0x6c5cecc)

r = ssh('col', 'pwnable.kr', password='guest', port=2222)
p = r.process(executable='./col', argv=['col', payload])
flag = p.recv()

log.success("flag:" + flag.decode())

p.close()
r.close()

在这里插入图片描述

Flag

daddy! I just managed to create a hash collision :)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2057273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【特殊文件---properties】

properties 1. 注释 在properties中注释是采用#号开头的方式来进行注释的 2. 编写properties文件 在properties中&#xff0c;一行就是一个键值对&#xff08;keyvalue&#xff09;&#xff0c;简单的理解就是一行可以保存一个变量&#xff0c;键和值之间用号隔开 记住&…

使用Maple Flow进行工程计算与代码生成的图文教程

在工程和科学计算领域&#xff0c;Maple Flow以其强大的数学引擎和代码生成功能&#xff0c;成为工程师和研究人员的得力助手。本文将通过一系列步骤&#xff0c;引导您如何使用Maple Flow从概念验证到生成可在其他环境中运行的代码&#xff0c;完成一个完整的工作流程。 第一…

LLM大模型技术实战:一文讲透专补大模型短板的RAG

大型语言模型&#xff08;LLMs&#xff09;已经成为我们生活和工作的一部分&#xff0c;它们以惊人的多功能性和智能化改变了我们与信息的互动方式。但是当我们将大模型应用于实际业务场景时会发现&#xff0c;通用的基础大模型基本无法满足我们的实际业务需求&#xff0c;主要…

大模型时代,云南白药如何成为一家AI医药企业?|产业AI案例

作者|斗斗 编辑|皮爷 出品|产业家 中医药大模型发布&#xff1b;英伟达成立AI制药部门&#xff0c;发力生物制药领域&#xff1b;赛诺菲与百图生科达成战略合作&#xff0c;共同开发用于生物治疗药物发现的领先模型&#xff1b;京东发布医疗大模型&#xff1b;百度“产业级”…

机器学习--特征工程常用API

1. DictVectorizer - 字典特征提取 DictVectorizer 是一个用于将字典&#xff08;如Python中的字典对象&#xff09;转换为稀疏矩阵的工具&#xff0c;常用于处理类别型特征。 DictVectorizer(sparseTrue, sortTrue, dtype<class numpy.float64>)参数&#xff1a; spar…

ggplot阶截断坐标轴-gggap

目录 gggap包安装 功能查询 简单版使用代码 复杂版使用代码 gggap包安装 CRAN: Package gggap (-project.org) 手动下载安装 功能查询 > ?gggap > ?gggapDefine Segments in y-Axis for ggplot2 Description Easy-to-define segments in y-axis for ggplot2. …

使用Clion开发STM32串口调试遇到问题之重定向printf不显示(已解决问题)

为什么要使用重定向printf C语言中经常使用printf来输出调试信息&#xff0c;打印到屏幕。由于在单片机中没有屏幕&#xff0c;但是我们可以重定向printf&#xff0c;把数据打印到串口&#xff0c;从而在电脑端接收调试信息。这是除了debug外&#xff0c;另外一个非常有效的调…

根据前序遍历和中序遍历生成二叉树,并层序遍历输出二叉树

二叉树 前序遍历&#xff1a;ABDFCEGH 中序遍历&#xff1a;BFDAGEHC 演示 代码&#xff1a; package com.fdw.algorithm.hhh;import com.fdw.algorithm.structure.TreeNode;import java.util.LinkedList; import java.util.Queue;/*** description:* author: ThatMonth* cr…

Javaweb学习之JavaScript输出与字符串(二)

前情回顾 Javaweb学习之JavaScript&#xff08;一&#xff09;-CSDN博客 学习资源 w3school 在线教程 本期介绍 输出语句 在JavaScript中&#xff0c;有几种方式可以输出信息到控制台&#xff08;console&#xff09;、浏览器窗口&#xff08;window&#xff09;或其他地方。…

谷粒商城实战笔记-220~224-商城业务-微博认证服务-OAuth2.0

文章目录 一&#xff0c;220-商城业务-认证服务-OAuth2.0简介二&#xff0c;221-商城业务-认证服务-微博登录测试1&#xff0c;创建微博应用2&#xff0c;应用配置重定向url3&#xff0c;修改商城登录页面4&#xff0c;点击微博登录5&#xff0c;点击授权 三&#xff0c;222-商…

[译]开发者与熵的博弈

原文&#xff1a;https://itnext.io/entropy-in-software-development-77ed9110ef28 翻译&#xff1a;我的文章翻译智能体 文章润色智能体 文章转脑图智能体 人工校对 文章脉络&#xff1a; 文章概括&#xff1a; 文章通过热力学的视角&#xff0c;深入探讨了软件开发中的复…

GitHub的未来:在微软领导下保持独立与AI发展的平衡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

企业高性能web服务器----nginx详细知识点+实验

知识点 一、Web 服务介绍 Apache Nginx 1、Apache 经典的 Web 服务端 Apache 起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是 1.X 和 2.X 其可以通过编译安装实现特定的功能 2、Apache的三种模型 Apache prefork 模型 预…

4000元亮度最高的投影仪:当贝X5S 3300CVIA流明超高亮度白天也清晰

你购买投影仪的时候一般预算多少&#xff1f;目前市面上的投影仪价位有几百也有上万&#xff0c;品牌和类型都比较多&#xff0c;买投影前比较关注哪些投影仪参数&#xff1f;最近有朋友向我咨询购买投影仪的事项&#xff0c;预算在4000左右&#xff0c;问问4000元哪款投影仪哪…

Ollama Desktop

一、简介 Ollama Desktop是基于Ollama引擎的一个桌面应用解决方案&#xff0c;用于在macOS、Windows和Linux操作系统上运行和管理Ollama模型的GUI工具。 Ollama Desktop提供了丰富的功能&#xff0c;包括但不限于&#xff1a; 可视化的管理界面&#xff1a;用户可以通过图形…

推荐3款免费强大OCR神器,工作必备,总有一款适合你,必须收藏

ShareX ShareX是一款功能强大且免费的开源屏幕捕捉和录屏工具&#xff0c;主要用于Windows操作系统。它不仅可以捕捉任何屏幕区域&#xff0c;还可以录制视频、拍摄屏幕截图&#xff0c;并将其上传到各种在线平台。ShareX的功能非常全面&#xff0c;包括截图、录屏、加水印、裁…

低代码平台:效率与创新的双重引擎

低代码开发在软件开发领域是一种越来越流行的趋势&#xff0c;这是有充分理由的。低代码使专业开发人员和非开发人员能够构建更易于集成、修改和升级的复杂企业解决方案&#xff0c;使企业能够快速轻松地创建软件应用程序无需丰富的编码经验。低代码平台彻底改变了软件开发方式…

LLM应用实战: 产业治理多标签分类

1. 背景 许久未见&#xff0c;甚是想念~ 近期本qiang~换了工作&#xff0c;处于新业务适应期&#xff0c;因此文章有一段时间未更新&#xff0c;理解万岁&#xff01; 现在正在着手的工作是产业治理方面&#xff0c;主要负责其中一个功能模块&#xff0c;即按照产业治理标准体…

巡检机器人有哪些功能和应用场景

随着科技的飞速发展&#xff0c;巡检机器人作为智能化、自动化的重要代表&#xff0c;已经在多个领域展现出其独特的优势。从工业生产到特殊环境监测&#xff0c;巡检机器人以其高效、准确和安全的特性&#xff0c;逐渐取代了传统的人工巡检方式&#xff0c;极大地提升了巡检效…

spring boot(学习笔记第十八课)

spring boot(学习笔记第十八课) Spring boot的定时任务和Quartz 学习内容&#xff1a; Spring boot的定时任务Spring boot的Quartz 1. Spring boot的定时任务 定义定时任务 加入必要的依赖 <dependency><groupId>org.springframework.boot</groupId&g…