攻防世界 zorropub

还是逆向比较有趣(●’◡’●)

  • 一个知识遗漏点(写给自己看的)

    sprintf()
    sprintf(buffer,format,argument)是指向缓冲区写入字符,format是格式,arg是要输入的东西,buffer是缓冲区。
    
    题目中的一段:
    sprintf(&s1[2*i],"%02x",(unsigned __int8)v11[i])
    
    一开始疑惑了一会,后面才意识到,s1是char数组,一个占4位,
    后面的将其换成8位,八位要放4位,要空两位,oooo,原来如此。
    
    

这是一道挺有意思的题,又掌握了一些新的姿势。
在这里插入图片描述
简单,第一步输入个1就行。

下面是关键一步:
在这里插入图片描述
再分析一波后面,

发现是用随机数,然后,生成密匙,进行md5操作,

然后与一段给出的字符串进行比较,目测是md5加密。

emmmm,不管这么多了,一个一个函数分析也不那么现实。

这个写脚本有点麻烦,

但可以直接用工具爆破出来,

没想到pwn的工具会用到逆向上,也是有点醉了,

  • 思路:

先输入个1

再弄出所有满足条件的,放到一个数组去中,逐个进行,

网上有一个还帮忙算上了时间,顺带学了一波py的时间计算。

from pwn import*
import time
time1=time.time()
a=[]

for i in range(16,0xffff):
	v9=0
	i=i^0
	j=i
	while(i):
		v9+=1
		i&=i-1
	if v9 ==10:
		a.append(j)
//数组已经弄好了

for i in a:
	p=process("./zorropub")
	p.recv()
	p.sendline('1')
	p.sendline(str(i))//emmm,觉得int的也ok
	result=p.recv()
	if "null" in text:
		print text
		time2=time.time()
		print "time %fs"%(time2-time1)
		break
p.close()
		
	
	
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值