首页
社区
课程
招聘
[分享]pwnable.kr random day5
发表于: 2021-1-6 14:39 8840

[分享]pwnable.kr random day5

2021-1-6 14:39
8840


flag 只对创建者 random_pwn 和 root 可读,而我们登录的用户是 random,无读权限。random 对random_pwn 和 random 开放读和执行权限,而且权限里面有 s,因此 random 用户在执行这个文件时会被赋予 root 权限。

我们的目标是执行 system("/bin/cat flag"),需满足 key ^ random == 0xdeadbeef
key 的值手动输入,我们可控
random 的值是由 rand() 产生,rand() 产生的随机数在每次运行的时候都是与上一次相同的。若要不同, 用函数 srand() 初始化它。此处没有使用 srand() 所以我们可以先执行一次程序查看 random 的值。

#include <stdio.h>
 
int main(){
        unsigned int random;
        random = rand();        // random value!
 
        unsigned int key=0;
        scanf("%d", &key);
 
        if( (key ^ random) == 0xdeadbeef ){
                printf("Good!\n");
                system("/bin/cat flag");
                return 0;
        }
 
        printf("Wrong, maybe you should try 2^32 cases.\n");
        return 0;
}
#include <stdio.h>
 
int main(){
        unsigned int random;
        random = rand();        // random value!
 
        unsigned int key=0;
        scanf("%d", &key);
 
        if( (key ^ random) == 0xdeadbeef ){
                printf("Good!\n");
                system("/bin/cat flag");
                return 0;
        }
 
        printf("Wrong, maybe you should try 2^32 cases.\n");
        return 0;
}
b *0x0000000000400610
x/10x $rbp-4       
# 第一个 x 是 examine 的简写,用于查看内存地址的值。
# 用法:x/<n/f/u> <addr> 
# n,f,u 都是可选参数
# n是一个正整数,表示需要显示的内存单元的个数,一个内存单元的大小由后面的u定义
# f 表示显示的格式
#        x 按十六进制格式显示变量。
#        d 按十进制格式显示变量。
#        u 按十六进制格式显示无符号整型。
#        o 按八进制格式显示变量。
#        t 按二进制格式显示变量。
#        a 按十六进制格式显示变量。
#        c 按字符格式显示变量。
#        s 按字符串格式显示变量。
#        f 按浮点数格式显示变量。
# u 表示从当前地址往后请求的字节数,GDB 默认是 4 个 bytes。
#         b 表示单字节。
#         h 表示双字节。
#         w 表示四字节。
#         g 表示八字节。
# 当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。
# <addr>表示一个内存地址,也可以用寄存器(偏移)表示地址,如此次用的是 $rbp-4
b *0x0000000000400610
x/10x $rbp-4       
# 第一个 x 是 examine 的简写,用于查看内存地址的值。
# 用法:x/<n/f/u> <addr> 
# n,f,u 都是可选参数

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-1-6 14:44 被cease2e编辑 ,原因: 忘记加参考链接
收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 47
活跃值: (3673)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
参考链接
https://www.runoob.com/w3cnote/cpp-rand-srand.html
https://blog.csdn.net/allenlinrui/article/details/5964046
2021-1-6 14:42
0
游客
登录 | 注册 方可回帖
返回
//