b站pwn的學習總結

寫的很亂

1.c語言的運行過程

了解了c語言需要經過以上2個過程(編譯和匯編),才能讓機器按指令運行。機器只能聽得懂機器碼,所以要“匯編”。

那問題就來了,“編譯”這個動作有啥用,c語言這種高級語言,直接進行匯編,變成機器碼不更快嘛

ai回答

雖然直接將C語言匯編為機器碼可能會獲得更高的性能,但編譯過程中的匯編步驟可以提供更好的可移植性、開發效率、優化能力以及代碼可讀性與可維護性。因此,大多數情況下,我們使用C語言編譯為匯編代碼再生成機器碼,以平衡性能和開發效率之間的權衡。

IDA的作用就是反匯編和反編譯(你按f5就是反編譯),要是想理解反匯編,那就去查表,比如0x55就是push ebp,這樣一一對應的關系。

但是反編譯的原理好像就難了

2.大端序和小端序

老師講的這個,我大概理解了,就是大多數據是怎么存放的,大多棧的數據都是低地址對應數據地位,就跟圖小端序一樣。大端序很少見

也就是你按順序輸入的0A0B0C0D,壓入棧后就變成了,0D先壓進去,然后一次。。。

3.IDA小技巧,看c語言的匯編代碼。右鍵之后acc

就比如,這是main函數的反編譯后的代碼

如果你想看他的反匯編代碼那就

按空格,顯示text格式

5.本地調試+遠程調試+靜態分析

產看

調試

發送

寫法也可以是p32(0)+b"45fafasdfsd"

遠程調試

先直接簡單運行一下,也可以看出他的作用,就是把大寫的I邊成了you

然后我們在gdb里面運行調試,我這里安裝了pwndbg的插件,pwn神給的ubuntu

堆入門系列(2)之gdb動態調試_gdb查看heap-CSDN博客

打個斷點b main

b就是break的簡寫,使用方式有b *0x004800(*加地址)

或者 b main(加一個函數)

清楚斷點是

然后運行,用run或者簡寫的r都可以運行

輸入n繼續往下查看,就是next的意思

n 執行下一條指令 ni步入

找到漏洞函數后

s step,si單步步進,然后按n運行,之后stack 24

使用vmmap直接查看該進程的內存空間

RIP 存放當前執行的指令的地址

RSP 存放當前棧幀的棧頂地址

RBP 存放當前棧幀的棧底地址

RAX 通用寄存器。存放函數返回值

6.strings的使用可以更快的查看可見字符,直接搜flag

我沒有例題,但是用法就是,就是如果你shift+f12能看見的,strings就能搜到

7.file也可以看32位還是64位

9.setvbuf()關閉緩沖區,作用是使你更快的運行程序,所以看見就不用管

10.動態調試是為了防止出題人在靜態文件中惡意修改變量的存儲空間

12.PIE保護BSS緩沖區的地址,ASLR保護text和data的緩沖區的地址。

怎么保護呢,就是沒次運行,讓你的標識的地址不一樣,地址隨機偏移一位兩位的

13.多個地址為什么能成功

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

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

相關文章

玩轉大數據10:深度學習與神經網絡在大數據中的應用

目錄 1. 引言:深度學習和神經網絡在大數據中的重要性和應用場景 2. 深度學習的基本概念和架構 3. Java中的深度學習框架 3.1. Deeplearning4j框架介紹及Java編程模型 3.2. DL4J、Keras和TensorFlow的集成 4. 大數據與深度學習的結合 4.1. 大數據與深度學…

電腦端同時登錄多個微信

1、建立一個txt文件 2、右擊微信查看應用的屬性,記錄文件的位置 3、將步驟二得到的路徑按照下方的格式輸入到步驟一的文本中 4、保存之后將文本后綴名的.txt改成.bat 5、在未登錄微信的情況下,雙擊即可得到兩個微信登錄窗口

Python高級算法——回溯法(Backtracking)

Python中的回溯法(Backtracking):高級算法解析 回溯法是一種通過嘗試所有可能的解來找到問題解的算法設計方法。它通常應用于組合問題、排列問題、子集問題等。在本文中,我們將深入講解Python中的回溯法,包括基本概念…

解決oracle.sql.TIMESTAMP序列化轉換失敗問題 及 J2EE13Compliant原理

目錄 報錯現象報錯內容處理方法Oracle驅動源碼總結 報錯現象 oracle表中存在TIMESTAMP類型的列時,jdbc查出來做序列化時報錯 報錯內容 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframewo…

x86和ARM中配置無線網SSID和PASSWORD

提供一個可行的方法 1.準備文件 hostapd.conf :是用戶控件的守護進程用于無線接入點(AP)和授權服務器(authentication servers),存放路徑:/etc/hostapd/hostapd.conf interfacewlp5s0 drivernl80211 chan…

Java中多線程中 synchronized 鎖升級的原理是什么?

Java中多線程中 synchronized 鎖升級的原理是什么? 在 Java 中,synchronized 鎖的升級是指在不同的場景下,鎖的性能優化。Java 的鎖有多個狀態,主要包括偏向鎖、輕量級鎖和重量級鎖。 偏向鎖:當只有一個線程訪問同步塊…

acwing算法提高之動態規劃--背包模型(三)

目錄 1 基礎知識2 模板3 工程化 1 基礎知識 暫無。。。 2 模板 暫無。。。 3 工程化 題目1:潛水員。 解題思路:DP。 狀態定義f[i][j][k]:從前i個物品中選,氧氣至少為j,氮氣至少為k的最小方案數。 狀態轉移&…

解決idea 通過build project 手動觸發熱部署失敗

在debug運行項目的過程中,并且保證(不添加方法,不修改方法名)一定的規則的情況下,可以通過build project 來手動熱部署項目,也就是會交換class文件與resouces文件。 設置項 Edit Configurations Modify Op…

計算機圖形學理論(1):建模基礎

本系列根據國外一個圖形小哥的講解為本,整合互聯網的一些資料,結合自己的一些理解。 場景的組成部分 場景相當于一個或多個模型的集合。模型包含以下內容: 結構描述:幾何形狀,如頂點、紋理坐標等表面描述&#xff1a…

Vue3中的defineModel

目錄 一、vue3的defineModel介紹 二、defineModel使用 (1)在vite.config.js中開啟 (2)子組件 (3)父組件 一、vue3的defineModel介紹 為什么要使用到defineModel呢?這里有這樣一種場景&…

“快速排序:一種美麗的算法混沌”(1.hoare)

歡迎來到我的博客!在今天的文章中,我將采用一種獨特且直觀的方式來探討我們的主題:我會使用一幅圖像來貫穿整篇文章的講解。這幅精心設計的圖表不僅是我們討論的核心,也是一個視覺輔助工具,幫助你更深入地理解和掌握本…

學習深度強化學習---第2部分----RL動態規劃相關算法

文章目錄 2.1節 動態規劃簡介2.2節 值函數與貝爾曼方程2.3節 策略評估2.4節 策略改進2.5節 最優值函數與最優策略2.6節 值迭代與策略迭代2.7節 動態規劃求解最優策略 本部分視頻所在地址:深度強化學習的理論與實踐 2.1節 動態規劃簡介 態規劃有兩種思路&#xff1…

前端 Web Workers 簡介

簡介 以前我們總說,JS 是單線程沒有多線程,當 JS 在頁面中運行長耗時同步任務的時候就會導致頁面假死影響用戶體驗,從而需要設置把任務放在任務隊列中;執行任務隊列中的任務也并非多線程進行的,然而現在 HTML5 提供了…

App備案、ios備案Bundle ID查詢、公鑰信息、SHA-1值

App備案、ios備案Bundle ID查詢、公鑰信息、SHA-1值 Bundle ID這個就不說了,都知道是啥,主要說公鑰信息和SHA-1值的獲取 打開鑰匙串訪問,找到當前需要備案App的dis證書,如下: #####右鍵點擊顯示簡介 #####可以看…

03.仿簡道云公式函數實戰-QLExpress初探

1. 前言 在上一篇文章中,我們簡單介紹了一下表達式引擎,并引出我們的主角QLExpress.在這篇文章中,我們先來一個QLExpress的熱身。 2. 初探QLExpress 源碼地址:https://github.com/alibaba/qlExpress 筆者下載源碼的版本是3.3.…

STL源碼剖析筆記——適配器(adapters)

系列文章目錄 STL源碼剖析筆記——迭代器 STL源碼剖析筆記——vector STL源碼剖析筆記——list STL源碼剖析筆記——deque、stack,queue STL源碼剖析筆記——Binary Heap、priority_queue STL源碼剖析筆記——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

【Spring 基礎】00 入門指南

【Spring 基礎】00 入門指南 文章目錄 【Spring 基礎】00 入門指南1.簡介2.概念1)控制反轉(IoC)2)依賴注入(DI) 3.核心模塊1)Spring Core2)Spring AOP3)Spring MVC4&…

php實現截取姓名中的第一個字作為頭像的實戰記錄

php 截取中文字符串第一個字 substr 函數 在 PHP 中,使用 substr 函數來截取中文字符串的第一個字。由于 PHP 默認的字符編碼是 UTF-8,它可以正確處理中文字符。 $chineseString "你好世界"; $firstChar substr($chineseString, 0, 1); e…

vue2 組件內路由守衛使用

1、beforeRouteEnter 進入頁面 to – 即將要跳轉到的頁面 form – 跳轉前的頁面,從哪個頁面跳轉過來的 next – 下一步,若無指定跳轉的路由,設置為空 next() 即可 beforeRouteEnter(to, from, next) {next() }, 使用 beforeRouteEnter 時&…

中文分詞演進(查詞典,hmm標注,無監督統計)新詞發現

查詞典和字標注 目前中文分詞主要有兩種思路:查詞典和字標注。 首先,查詞典的方法有:機械的最大匹配法、最少詞數法,以及基于有向無環圖的最大概率組合,還有基于語言模型的最大概率組合,等等。 查詞典的方法…