wustctf2020_number_game

第一次碰到这种类型的题目,特地来记录一下

例行检查就不放了

 

int的取值范围[-2147482648,2147483647]

 

网上的解释:

绕过第9行的if即可获取shell,v1是无符号整型,我们输入数据后会转换成补码(负数的补码=原码取反+1)存放在内存中,32位int型表示的范围是-2147483648~2147483647,我们这边应该先输入一个负数,然后去掉它前门的负号,变成正的,然后计算它的补码,该补码要大于0。-2147483648的补码是0x80000000,它取反加一之后仍然是0x80000000,因此这边输入-2147483648

 

 结束!!!

 

posted @ 2021-09-19 22:00  庄周恋蝶蝶恋花  阅读(170)  评论(0)    收藏  举报