pwnable.kr 第二题 collision

题目地址

http://pwnable.kr/play.php

首先登录查看文件

pwnable.kr 第二题 collision_第1张图片

分析代码,目的输出flag

pwnable.kr 第二题 collision_第2张图片

显而易见,要让flag输出 就得让check_password这个函数返回一个0x21DD09EC

看提示可以得出要输一个20字节的字符

int占四个字节 char占一个字节 

check_password 转换时候将20个char 四个一组转为int并相加

pwnable.kr 第二题 collision_第3张图片

用python自带的计算机简单算一下 我们需要输入四个0x6c5cec8和一个0x6c5cecc

使用万能的python,尝试了多次终于得到了flag

出现错误如下:

没有考虑小端存储

           小端存储:较低的有效字节存放在较低的存储器地址,较高的字节存放在较高的存储器地址;

            放在数组中 我的理解就是较小的数放在数组中靠前的位置也就是较低的存储器地址,较大的相反

            所以'0x6C5CEC8'要写成 '\xC8\xCE\xC5\x06' 

还有就是构造python语句时要在前面加$() ,$是unix系统的命令行提示符

你可能感兴趣的:(pwnable.kr 第二题 collision)