您当前的位置: 首页 > 

合天网安实验室

暂无认证

  • 1浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

萌新带你开车上p站(三)

合天网安实验室 发布时间:2020-04-16 16:49:33 ,浏览量:1

本文原创作者:萌新

前情提要:

萌新带你开车上p站(一)

萌新带你开车上p站(二)

 

0x08

题目给的提示是和运算符优先级有关

 1.png

登录后直接看源码

mistake@pwnable:~$ ls

flag  mistake  mistake.c  password

mistake@pwnable:~$ cat mistake.c

#include 

#include 


#define PW_LEN 10

#define XORKEY 1


void xor(char* s, int len){

int i;

for(i=0; i 0)){

printf("read error\n");

close(fd);

return 0;

}


char pw_buf2[PW_LEN+1];

printf("input password : ");

scanf("%10s", pw_buf2);


// xor your input

xor(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;

}

 

看关键:

main调用的xor函数: 

2.png

将长度给len的字符串与1异或

main中的主要逻辑 

3.jpg

从/home/mistake/password读10个字节数据放到pw_buf,我们手动输入10字节数据放在pw_buf2,如果pw_buf2与1异或的结果如果与pw_buf相等,则打印flag

那么关键就是pw_buf的数据,先直接读password看看 

4.png

没有权限

题目的提示是和运算符优先级有关

我们仔细分析源码,看看问题出在哪里

问题在这里

if(fd=open("/home/mistake/password",O_RDONLY,0400) < 0){

open函数里权限检查是没问题的,O_RDONLY表示以只读方式打开

0400表示文件所有者具有可读取的权限

由于权限通过检查,所以open函数返回值为0

有因为0

关注
打赏
1665306545
查看更多评论
立即登录/注册

微信扫码登录

0.1295s