Pwnable.xyz l33t-ness

pwnable.xyz

一,查保护。

 标准全保护。

二,解决方案。

main():

逻辑没什么好说的,3轮测试直接就赢了。

先来看看round1():

通过方案:

X - Y = 1337(X <= 1336,Y <= 1336)

令X = 1336 Y = -1即可通过,但17行函数strchr()过滤符号 " - "(减号)使得无法输入 -1。

注意到v1,v2数据类型为int,但符号检测只针对s(char),v4(const char),所以可以输入特定值使得v2值为FFFFFFFFh(-1)。

则:X = 1336 Y = 4294967295

round2():

 通过方案:

此轮与上题相反,利用正溢出通过,即 v1 * v2 = 100000539h.

由于int大小为4byte,最高位1溢出,使得 v1 * v2 实际等于 00000539h(1337)

示例v1 , v2:

v1 = 3 , v2 = 1431656211

round3():

解决方案:

该轮要求输入5个int值,分别保存在v2,v3,v4,其中 v2,v3以高低位分别保存两个int值。

5个值要求单调递增,且其和等于其积。

只要使其和与积为零即可通过。

示例数列:

-2 ,-1 , 0 , 1 , 2 

 三,总结。

本题主要考察对数值格式的理解以及代码审计,没什么特别的难点。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值