原创 UNCTF:coverme(覆蓋任意地址內存 )

查詢一下文件信息: 】 開啓了NX(棧不可執行)和cannary(棧溢出檢測):     使用IDA PRO查看一下程序流程:     沒有發現棧溢出,但是在printf處有字符串格式化漏洞 分析得到要使用字符串格式化漏洞去修改key的值

原创 ctfwiki-pwn:Basic ROP(ret2syscall)

原理  ret2syscall,即控制程序執行系統調用,獲取 shell。 例子  點擊下載: ret2syscall 首先檢測程序開啓的保護 ret2syscall checksec rop Arch: i386-32-

原创 ctfwiki-pwn:Basic ROP

實驗程序:ret2text 使用IDA PRO反彙編:         拿到進入gett函數的call之後進行gdb調試,下這個call的斷點,然後運行得到如圖:   s的地址=0xffffd0f0+0x1c=0xFFFFD10Cs到eb

原创 ctfwiki-pwn:Stack Overflow Principle

程序源碼: #include <stdio.h> #include <string.h> void success() { puts("You Hava already controlled it."); } void vulnerabl

原创 ctfwiki-pwn:canary

GCC 中使用以下參數設置 Canary: -fstack-protector 啓用保護,不過只爲局部變量中含有數組的函數插入保護 -fstack-protector-all 啓用保護,爲所有函數插入保護 -fstack-protector

原创 pwn入門實驗2:緩衝區溢出(NX機制及繞過策略-ret2libc)

前言 溢出攻擊的本質在於馮·諾依曼計算機模型對數據和代碼沒有明確區分這一先天性缺陷。因爲攻擊者可以將代碼放置於數據區段,轉而讓系統去執行。 NX緩解機制開啓後,使某些內存區域不可執行,並使可執行區域不可寫。示例:使數據,堆棧和堆段不可

原创 pwm入門實驗:緩衝區溢出(沒有system函數)

實驗的緩衝區溢出源碼: // 1.c #include<stdio.h> void func() { char name[0x50];//0x100大小的棧空間 read(0, name, 0x100);//輸入0x200

原创 linux:開啓ASLR

判斷ASLR是否打開,輸出2表示打開 cat /proc/sys/kernel/randomize_va_space   關閉ASLR,切換至root用戶,輸入命令 echo 0 > /proc/sys/kernel/randomi

原创 UNCTF:Baby_ret2text(棧溢出)

基本信息查詢    Stack:這裏沒有開啓Stack保護,如果開啓的話會在棧中的返回地址前放一個隨機值,如果被覆蓋,程序就會報錯退出 NX:沒有開啓,如果開啓的話就不能讓IP寄存器指向堆、棧       這裏顯示這是一個ELF32位的程

原创 Pwn環境安裝

wget -q -O- https://raw.githubusercontent.com/Nepire/Pwngdb/master/install.sh | sh  

原创 linux 添加path

vim ~/.bashrc //在最後一行添上: export PATH=$PATH:/xxx/xxx  

原创 Ubuntu20 64位運行32位程序環境安裝

按順序執行以下命令: su dpkg --add-architecture i386 apt install libc6:i386 libstdc++6:i386 sudo apt-get update apt instapt-get i

原创 checksec安裝和簡單介紹

 安裝: sudo apt install checksec   介紹: 1.Relro:Full Relro(重定位表只讀)   Relocation Read Only, 重定位表只讀。重定位表即.got 和 .plt 兩個表。

原创 kali2020安裝pip

安裝pip3 curl -s https://bootstrap.pypa.io/get-pip.py | python3   安裝pip2 curl https://bootstrap.pypa.io/get-pip.py -o g

原创 UNCTF:BABYRSA

下載附件,解壓後有一個加密文件和rsa.py代碼如下: flag = open('flag.txt','r').read() N = 221 e = 5 enc = b'' for i in flag: enc += bytes