gdb-peda调试pwnable.kr题目random

本文详细记录了在pwnable.kr网站上第六题random的解题过程,主要利用gdb-peda进行调试。通过分析源码,发现关键在于获取rand函数的固定返回值,然后计算出正确的key值。调试过程中设置了rand函数的断点,获取到rand返回的随机数0x6b8b4567,通过异或运算得到key为0xb526fb88(十进制3039230856)。最后提交该key成功获取flag。
摘要由CSDN通过智能技术生成

题目pwnable.kr——6.random

各种技术文章开始前的例行叨叨:

pwnable.kr是CTF—pwn类型题目学习网站,对其中第6题random解题过程做一份记录。

本萌新菜鸡刚接触pwn,顺手做记录,欢迎指正讨论。



源码:

文件【random.c】

#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;
}



分析:

变量random是rand随机函数返回值

变量key是由我们输入的值

要求key异或random后等于0xdeadbeef才能Get flag


突破点在于:rand函数没有设变化的随机种子,每次随机的结果都相同。

所以,获取到这个假随机rand值,就能计算出正确的key。



调试:

【目的】:通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值