原创 利用puts函數泄露libc內存信息

puts函數puts的原型是puts(addr),即將addr作爲起始地址輸出字符串,直到遇到“x00”字符爲止。也就是說,puts函數輸出的數據長度是不受控的,只要我們輸出的信息中包含x00截斷符,輸出就會終止,且會自動將“n”追加到輸

原创 stack smahes

程序開啓了Canary 保護 ,如果讀取的buffer覆蓋了相應的canary值 就會報錯 ,調用__stack_chk_fail 來打印錯誤 ,我們不關心這報錯 ,但是我們可以利用這個函數來打印我們想輸出的內容void __attrib

原创 GOT表覆寫技術

GOT表:概念:每一個外部定義的符號在全局偏移表(Global offset Table)中有相應的條目,GOT位於ELF的數據段中,叫做GOT段。作用:把位置無關的地址計算重定位到一個絕對地址。程序首次調用某個庫函數時,運行時連接編輯器

原创 通過給的libc泄露函數地址

libc中的函數相對於libc的基地址的偏移都是確定的,如果有一道題給你了libc的文件,就可以通過libc文件泄露出system函數和binsh的地址,然後再構造payload。一般通過write()函數泄露 ,通過ELF獲得write

原创 linux的防護機制

1、NX/DEP:堆棧不可執行 ,將數據所在的內存頁標識爲不可執行,當程序試圖在數據頁面執行指令時,cpu就會拋出異常繞過方法:ROP ret2libc關閉NX:gcc -z execstack -o pwn pwn.c2、Cannry:

原创 PWN-無libc泄露

pwn題的無libc泄露用到的pwntools的DynELF模塊實現條件是:有指向libc空間的 能泄露libc空間信息的函數 (write和puts函數)能重複觸發漏洞DynELF模塊的基本框架:p=process('./xxx')de

原创 pwn題目的搭建

關閉NX:gcc -z execstack -o pwn pwn.c關閉程序的canary:gcc -fno-stack-protector -o pwn pwn.c如何關閉程序的aslr: gcc -no-pie pwn pwn.c關閉

原创 中斷 int 0x80 的作用

 當進程執行系統調用時,先調用系統調用庫中定義某個函數,該函數通常被展開成前面提到的_syscallN的形式通過INT 0x80來陷入核心,其參數也將被通過寄存器傳往核心。 在這一部分,我們將介紹INT 0x80的處理函數system_c

原创 rop and rop2 wp

題目來源:國外的一個ctf平臺https://hackme.inndy.tw/ rop題目提示:ROP buffer overflow 很明顯是一個棧溢出 要用rop來獲取shell防護機制發現至開啓了NX 拖到IDA反編譯一下 可以看到

原创 查看系統調用號

在linux 查看32位的系統調用號 cat /usr/include/asm/unistd_32.h 查看64位的系統調用號 cat /usr/include/asm/unistd_64.h

原创 pwn --棧遷移

棧遷移主要是爲了解決棧溢出可以溢出空間大小不足的問題棧遷移的實現:通過將ebp覆蓋成我們構造的fake_ebp ,然後利用leave_ret這個gadget將esp劫持到fake_ebp的地址上leave_ret相當於:mov %ebp,

原创 HITCON-Training-master lab5 wp

程序防護機制:開啓了NX堆棧不可執行查看了下ida反編譯的代碼可以發現主函數十分簡單,但是程序裏卻又十分多的函數,說明這是靜態鏈接編譯的程序要求輸入一局話,可以發現在read函數處有明顯的棧溢出漏洞,buf大小是20 ,但是read函數讀

原创 32位下利用_dl_runtim_resolve函數

利用_dl_runtime_resolve來解析特定的函數 這裏以這裏以XDCTF 2015的pwn200爲例 基礎前置知識請看這篇文章_dl_runtime_resolve 利用的步驟主要有5步 控制程序的棧轉移到我們可以控制的地址

原创 做pwn題時的一些調試技巧

當你覺得你的腳本沒有問題,但是卻又怎麼也出你想要的結果時,你就需要用到調試了一個是設置context.log_level="debug"腳本在執行時就會輸出debug的信息,你可以通過觀察這些信息查找哪步出錯了而另一個就是 用pwnlib

原创 一些彙編的知識順便填上 通用gadget_libc_csu_init的坑

我寫這篇博客主要是因爲某人對我發起的靈魂拷問爲什麼level5利用_libc_csu_init 的gadget構造的payload要在末尾加上0x38個填充字符我聽到這個問題是很矇蔽的,我當時想當然的講是用來維持棧平衡的,然rsp的值變成