【pwnable.kr】 mistake
https://r00tnb.github.io/2018/01/17/pwnable.kr-mistake/
前言
这题其实考察细心,不难。
分析
还是先贴代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <stdio.h> #include <fcntl.h>#define PW_LEN 10 #define XORKEY 1void xor(char* s, int len){int i;for(i=0; i<len; i++){s[i] ^= XORKEY;} }int main(int argc, char* argv[]){int fd;if(fd=open("/home/mistake/password",O_RDONLY,0400) < 0){printf("can't open password %d\n", fd);return 0;}printf("do not bruteforce...\n");sleep(time(0)%20);char pw_buf[PW_LEN+1];int len;if(!(len=read(fd,pw_buf,PW_LEN) > 0)){printf("read error\n");close(fd);return 0; }char pw_buf2[PW_LEN+1];printf("input password : ");scanf("%10s", pw_buf2);// xor your inputxor(pw_buf2, 10);if(!strncmp(pw_buf, pw_buf2, PW_LEN)){printf("Password OK\n");system("/bin/cat flag\n");}else{printf("Wrong Password\n");}close(fd);return 0; } |
题目逻辑很简单,只要从password
文件中读取的数据跟输入的数据的异或加密后的结果相等,就会得到flag。
但是整个逻辑如果不细心,就不会发现错误,就真的如我上面所想像的逻辑了。
根据题目提示:运算符优先级。可以看到open函数直接跟小于号与零比较,由于c语言中小于号优先级高于赋值的等号,又由于这里open函数会返回大于零的值,那么先进行比较运算返回逻辑假值,在c语言中就是0,所以fd的值就是0。
知道了这些,那么后面的read调用就会从标准输入中读取值,那么两个值就都在控制之中了,于是就能getflag了。要注意第二次输入要进行异或加密。
1 2 3 4 5 6 7 |
mistake@ubuntu:~$ ./mistake do not bruteforce... 1234567890 input password : 0325476981 Password OK Mommy, the operator priority always confuses me :( mistake@ubuntu:~$ |
总结
这题当时纠结了一会儿,确实要细心,安全漏洞总会发生在最容易忽略的地方,要时刻保持细心。
【pwnable.kr】 mistake相关推荐
- 【pwnable.kr】Toddler‘s Bottle-[flag]
目录导航 下载题目文件 二进制分析 获取flag gdb调试 下载题目文件 Papa brought me a packed present! let's open it.Download : htt ...
- 【pwnable.kr】passcode
pwnable从入门到放弃,第六题. ssh passcode@pwnable.kr -p2222 (pw:guest) 完全是'&'的锅. #include <stdio.h> ...
- 【pwnable.kr】day8:leg
pwnable:leg pwnable.kr:leg 题目链接 question Daddy told me I should study arm. But I prefer to study my ...
- 【pwnable.kr】leg
pwnable从入门到放弃第八题. Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ss ...
- 【pwnable.kr】 alloca
https://www.anquanke.com/post/id/170288 前言 最近在刷pwnable.kr [Rookiss],题目都好有意思,一其中题alloca虽然分值不高,但分析过程很值 ...
- 【pwnable.kr】Toddler‘s Bottle-[passcode]
目录导航 进入服务器 下载文件 反编译分析 EXP TIPS 进入服务器 Mommy told me to make a passcode based login system. My initial ...
- 【pwnable.kr】Toddler‘s Bottle-[random]
目录导航 Target & Download Analysis & IDA Debug & writeup TIPS Target & Download Daddy, ...
- 【pwnable.kr】Toddler‘s Bottle-[bof]
目录导航 打开题目审题 nc 命令介绍 获取服务器文件 源代码分析 ELF分析构造payload 解题 打开题目审题 Nana told me that buffer overflow is one ...
- 【pwnable.kr】Toddler‘s Bottle-[fd]
目录导航 打开题目审题 找到突破口 相关c语言知识 源代码分析 找到FLAG 打开题目审题 Mommy! what is a file descriptor in Linux?* try to pla ...
- 【pwnable.kr】 passcode
https://r00tnb.github.io/2017/12/10/pwnable.kr-passcode/ 分析 首先读源码passcode.c 1 2 3 4 5 6 7 8 9 10 11 ...
最新文章
- PowerDesigner 使用的一些技巧(转)
- 关于学习Python的一点学习总结(50->描述符)
- 频发:记ADG备库日志应用延迟的一次故障处理-云和恩墨技术通讯精选
- 解析:百思买败于外部派系争斗
- 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
- 汇编语言,两个数字的想加_8085微处理器中的汇编语言程序将两个16位数字相乘...
- 任正非《一江春水向东流》
- Ubuntu中恢复rm命令误删文件(转)
- 2021邵阳市区三中高考成绩查询,2021年邵阳市普通高考科目及各科分数
- 幼儿园调查过程怎么写_如何写幼儿园调查问卷总结
- 杰理之Dongle【篇】
- 大端模式和小端模式是什么意思?
- Ubuntu服务器配置mysql8
- 不同分辨率对应的像素输出时钟以及同步信号参数的整理
- java中有这个符号吗吗_Java中-符号是什么意思啊
- less保存后自动生成css文件
- STM32—OLED显示屏
- python起笔落笔_起笔、行笔、落笔,讲话稿还能这样写
- Windows查看文件占用情况、查看程序的dll依赖项
- 《人生重开模拟器》3天2亿流量却源于群内自嗨,网友:我提前看遍人生的无常...
热门文章
- CST启用GPU加速的调试笔记
- php如何识别flac文件,flac是什么格式
- HDR(高动态范围)
- 身份与访问管理技术在智慧城市的应用
- Centos7 安装teamviewer
- 扩展卡尔曼滤波soc估算 基于EKF算法的锂电池SOC 卡尔曼滤波估计电池soc ,simulink模型
- 重标极差分析法matlab,重标极差(RS)分析法估计Hurst指数的有效性检验.doc
- 复变函数——一到三章总结
- WiFi关联拒绝log分析以及代码流程 ASSOC_REJECT
- 第25章 	串行FLASH文件系统FatFs—零死角玩转STM32-F429系列