日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

网鼎杯2020 朱雀部分writeup

發(fā)布時(shí)間:2025/3/21 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网鼎杯2020 朱雀部分writeup 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Reverse –go



替換了base64字典

解題思路:
程序?qū)⑽覀冚斎氲膋ey,經(jīng)過(guò)換了編碼字典的base64加密后,去掉最后==,計(jì)算key加密后的長(zhǎng)度,長(zhǎng)度為0x16,就開(kāi)始解密。那么我們只需要輸入正確的key就有flag了,知道了base64加密字典XYZFGHI2+/Jhi345jklmEnopuvwqrABCDKL6789abMNWcdefgstOPQRSTUVxyz01,和密文nRKKAHzMrQzaqQzKpPHClX==,解密如下:


Reverse –tree



解題思路:
先找到根節(jié)點(diǎn),上面內(nèi)存塊為子節(jié)點(diǎn),還原二叉樹(shù)結(jié)構(gòu),通過(guò)調(diào)試器在內(nèi)存中定位到根節(jié)點(diǎn),依次還原每個(gè)子節(jié)點(diǎn),當(dāng)然也可以拷出來(lái)使用。



最后需要得到zvzjyvosgnzkbjjjypjbjdvmsjjyvsjx,按圖索驥在二叉樹(shù)中獲取查找方向,得到如下字符串- -:
10101111101001000001111111001000010101110100111100010010010010000001101010000100100111010111111101110001001000001111100010011100
轉(zhuǎn)ascii:
afa41fc8574f12481a849d7f7120f89c
整理下格式:
flag{afa41fc8-574f-1248-1a84-9d7f7120f89c}


解密代碼:

Pwn-Magic

題目邏輯:

1是創(chuàng)建多大空間 并保存你輸入的字符串
2根據(jù)索引釋放空間
3 根據(jù)索引打印對(duì)應(yīng)的字符串

解題思路:
在忘記魔法的函數(shù)里,釋放空間是根據(jù)給定的索引來(lái)釋放對(duì)應(yīng)的空間。但是刪除的時(shí)只free,而沒(méi)有設(shè)置為 NULL,這里是存在 Use After Free 的情況的。


同時(shí)還提供了這個(gè)函數(shù):

可以修改的輸入字段為 magic 函數(shù)的地址,從而實(shí)現(xiàn)在執(zhí)行“使用魔法”即調(diào)用輸入的字符串的時(shí)候執(zhí)行 magic 函數(shù)。
也可以自己構(gòu)造一個(gè)system(/bin/sh),我這里采用的是后者。

學(xué)習(xí)魔法創(chuàng)建的內(nèi)存結(jié)構(gòu)如下

Magic
Name ptr

我們通過(guò)寫(xiě)name的時(shí)候,覆蓋magic:

原理:
對(duì)于大小為(16 Bytes~ 64 Bytes)的堆塊來(lái)說(shuō)則是使用fastbin,在fastbin中,是由單項(xiàng)鏈表連接起來(lái)的,每個(gè)chunk的pre_chunk指向之前回收的chunk,即回收的chunk出于鏈表頭部,此時(shí)分配時(shí)也會(huì)從頭部分配。
這里的magic分配空間為0x10,顯然是一個(gè) fastbin chunk(大小為 16 字節(jié))。
我們通過(guò)連續(xù)申請(qǐng)空間,形成一個(gè)鏈表,釋放鏈表頭的空間后,再次申請(qǐng)內(nèi)存會(huì)從頭部分配。
即我們最后申請(qǐng)magic2的而空間保存到chunk0中,由于沒(méi)有將釋放的指針置空,我們?cè)俅握{(diào)用第0個(gè)magic,就會(huì)將最后magic2填入的name給執(zhí)行了。

步驟:
學(xué)習(xí)魔法,申請(qǐng)空間0,0x100,大小要不同于0x10 maigc的大小
學(xué)習(xí)魔法,申請(qǐng)空間1,0x100
忘記魔法,釋放空間0
忘記魔法,釋放空間1
學(xué)習(xí)魔法,申請(qǐng)空間2,大小為 0x10,和magic申請(qǐng)的一樣大,那么根據(jù)堆的分配規(guī)則
空間2 其實(shí)會(huì)分配空間1 對(duì)應(yīng)的內(nèi)存塊,這時(shí)name對(duì)應(yīng)的是magic 0地址。
如果我們這時(shí)候向magic 2 的name寫(xiě)入 需要執(zhí)行的地址(system啥的),那么由于沒(méi)有置magic 0為NULL。當(dāng)我們?cè)俅螄L試輸出magic 0 的時(shí)候,程序就會(huì)調(diào)用magic2處的代碼。

代碼:


總結(jié)

以上是生活随笔為你收集整理的网鼎杯2020 朱雀部分writeup的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。