pwnable.kr collision
来源:互联网 发布:军训用品淘宝模板 编辑:程序博客网 时间:2024/05/07 05:00
题目:
题目链接:http://pwnable.kr/play.php
——>连接登录查看源码如下:
#include <stdio.h>#include <string.h>unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i<5; i++){ res += ip[i]; } return res;}int main(int argc, char* argv[]){ if(argc<2){ printf("usage : %s [passcode]\n", argv[0]); return 0; } if(strlen(argv[1]) != 20){ printf("passcode length should be 20 bytes\n"); return 0; } if(hashcode == check_password( argv[1] )){ system("/bin/cat flag"); return 0; } else printf("wrong passcode.\n"); return 0;}
根据
if(strlen(argv[1]) != 20){ printf("passcode length should be 20 bytes\n"); return 0;}
得输入的长度为20
根据
if(hashcode == check_password( argv[1] )){ system("/bin/cat flag"); return 0;}
得check_password[argv[1]] == hashcode,
即check_password[argv[1]] == 0x21DD09EC,
而check_password的作用就是将输入的数据用整型转换,求和返回。
如果输入的数据为12345678,用整型转换时的内存情况如下:
对20个字节,要构造输入的整型转换后的5个整数求和 == 0x21DD09EC,第一个想法是:前16个字节赋\x00,最后4个字节为0xEC09DD21,但是\x09是HTab,输入会被阻断。
第二个想法:前16个字节赋\x01,最后4个字节为\xE8\x05\xD9\x1D,嗯,就这样。
./col `python -c "print '\x01' * 16 + '\xE8\x05\xD9\x1D'"`
flag:daddy! I just managed to create a hash collision :)
1 0
- pwnable.kr collision
- pwnable.kr collision
- pwnable.kr [collision]
- 【pwnable.kr-----解题过程】collision
- pwnable.kr
- pwnable.kr
- pwnable.kr
- pwnable.kr - fd
- pwnable.kr 之fd
- pwnable.kr之bof
- pwnable.kr之flag
- pwnable.kr之passcode
- pwnable.kr之random
- pwnable.kr之shellshock
- pwnable.kr之mistake
- pwnable.kr之input
- pwnable.kr之lotto
- pwnable.kr之cmd1
- js里面的object对象
- Android的推送方案AndroidPN
- UWP 入门教程2——如何实现自适应用户界面
- ios简单动画
- 关于String内存分配
- pwnable.kr collision
- javaWeb学习笔记-----3 javascript
- swift有关setValue崩溃,报告错误为NSCFString longValue unrecognized selector sent to instance
- Ajax 进阶
- 下载Python库win32com的地址
- ubuntu文件权限详解
- Xcode7真机测试libUMSocial_Sdk_4.2.2.a(UMSShareListController.o)' does not contain bitcode.
- 我的第一次份实习工作-iOS实习生-公司使用过的软件
- LBS应用的兴趣点与名称搜索