[Toddler's|[Toddler's Bottle]-random
首先我们看源代码
#include 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这个函数,由于没有设置种子(设置种子也要变化啊)所以可以知道这里是伪随机数,即每次的random都是同一个值,所以我们只需要找到这个值然后与0xdeadbeef异或即可得到key。
【[Toddler's|[Toddler's Bottle]-random】这里我们使用gdb调试来找到random的值(info register命令可以在gdb中查看寄存器的值)
文章图片
image.png
这里我们可以看到rax寄存器中的值就是我们的random
然后我们将它与0xdeadbeef进行异或
文章图片
image.png
得到key了
最后获取flag
文章图片
image.png
推荐阅读
- 【文本摘要】BottleSum——文本摘要论文系列解读
- Java集合系列-RandomAccess
- 02-06 Python库-random
- python中bottle使用实例代码
- python数据可视化|python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据
- pawnable.kr|pawnable.kr [Toddler's Bottle] 部分通关记录
- python-random模块