攻防世界 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()
		
	
	
	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章