首頁(yè)
社區(qū)
課程
招聘
Pwn 學(xué)習(xí)第四課打卡!

原發(fā)帖者:hackbs 2020-7-12
0x00:堆棧內(nèi)存對(duì)齊
{
and esp,0xfffffff0
主流編譯器的編譯規(guī)則規(guī)定“程序訪問(wèn)的地址必須向16字節(jié)對(duì)齊”,被16整數(shù)。
內(nèi)存對(duì)齊之后可以提高訪問(wèn)的效率。
}

 

0x01:GDB簡(jiǎn)單查看寄存器、內(nèi)存值命令
[
//查看寄存器eax的值
p/x $eax
x/x $eax
//查看內(nèi)存單元地址
p/x [$ebp-0x18]
p/x Address
x/x [$ebp-0x18]
p/x
Address
//查看內(nèi)存數(shù)據(jù)
p/nfu addr=
n 代表要顯示內(nèi)存的長(zhǎng)度
f 代表顯示的格式
u 表示從當(dāng)前地址往后請(qǐng)求字節(jié)數(shù) 默認(rèn)4Bytes
{
d:整數(shù)integer
s:字符串string
c:字符char
u:無(wú)符號(hào)整數(shù) unsigned integer
o:八進(jìn)制格式顯示變量
x:十六進(jìn)制格式
f: 浮點(diǎn)數(shù)格式float
}
{
b:表示一個(gè)字節(jié)顯示
h:表示雙字節(jié)顯示
默認(rèn):四個(gè)字節(jié)顯示
}

 

x/10cb 0x56555680
//標(biāo)識(shí)顯示10個(gè)數(shù)據(jù),字符型,一個(gè)字節(jié)。
]

 

Cannary保護(hù)辨別,原理
原理:
{
在需要保護(hù)的開始地方,先把gs段:偏移0x14數(shù)據(jù)放入[ebp-0xc],最后函數(shù)結(jié)尾的地方把gs段:偏移0x14數(shù)據(jù)拿出來(lái) 和[ebp-0xc]進(jìn)行異或比較,查看內(nèi)容是否有被修改,如果有被修改則 call _stack_chk_fail_local,無(wú)則正常運(yùn)行。
}
辨別:
{
0x565555ae <main+17> mov eax, dword ptr gs:[0x14]
0x565555b4 <main+23> mov dword ptr [ebp - 0xc], eax
0x565555b7 <main+26> xor eax, eax
....
0x565555d8 <main+59> mov edx, dword ptr [ebp - 0xc]
0x565555db <main+62> xor edx, dword ptr gs:[0x14]
0x565555e2 <main+69> je main+76 <main+76>
}

收藏
0條回答
零基礎(chǔ)入門pwn
  參與學(xué)習(xí)     1798 人
  提問(wèn)次數(shù)     36 個(gè)
《零基礎(chǔ)入門pwn》,短時(shí)間內(nèi)踏入漏洞利用的大門,快速成為一名合格的pwn題選手
我的問(wèn)答 領(lǐng)取收益
0
我的提問(wèn)
0
我的回答
0
學(xué)習(xí)收益