原创 格式化參數漏洞小技巧

做完ctf總結一下1。如果程序無法一次完成可以更改一個got表回到程序開始2。儘可能用hhn可以減小輸出次數,不然接收會有問題3。字符串偏移如果不好算可以輸出a來對齊4.格式化漏洞x64中還要加上5個寄存器from pwn import

原创 堆溢出姿勢

使用 Malloc Maleficarum 的堆溢出譯者:飛龍原文:Heap overflow using Malloc Maleficarum預備條件:理解 glibc malloc從 2004 年末開始,glibc malloc 變得

原创 off by one

一個字節溢出被稱爲off-by-one,曾經的一段時間裏,off-by-one被認爲是不可以利用的,但是後來研究發現在堆上哪怕只有一個字節的溢出也會導致任意代碼的執行。同時堆的off-by-one利用也出現在國內外的各類CTF競賽中,但是

原创 DynELF

from pwn import *# based on joker 's exploitr = remote("106.75.84.74", 10001)#pwn#r = remote("127.0.0.1", 10001)#pwn#co

原创 pwnable 之otp

這次是創建隨機文件輸入隨機密碼,找了半天發現沒有任何溢出所以想着是不是限制文件創建數量,ulimit f 0 後發現並不能出結果,百度後發現要把標準錯誤定義到別處,不然會終端程序附上別人的重定義import subprocesssubpr

原创 pwnable之random

首先使用scp下載random查看源代碼後發現使用了rand函數但是沒有加種子所以每次應該是一樣的數值使用gdb查看函數返回值可以看到eax 0x6b8b4567然後因爲源代碼異或按照異或規則a^b=c知道b和c求a只需要c^a所以登錄s

原创 兩種rop and egghunter

payload = 'A' * 24 + p64(pop_rdi_ret) + p64(read_got) + p64(puts_plt) + p64(evil_addr) payload = "http://%\0A" + 'A'*(1

原创 double free

Double Free淺析時間 2015-08-14 15:24:18  WooYun知識庫原文  http://drops.wooyun.org/binary/7958主題 安全技術最近在研究一些堆上面的漏洞。然後某一天騎自行車在路上跑

原创 pwnable之tiny_easy

這個程序沒有源代碼下載後發現程序小的可憐,彙編比較渣沒看明白要幹嘛,用gdb斷點在入口點的時候發現call edx中的edx是文件名,那麼是不是可以理解爲這個程序的第一個參數是跳轉地址,那麼我們修改一下把第一個的名字改成要跳轉的地址(第一

原创 pwnable.kr之fd

frgv[1]=0x1234同時輸入LETMEWIN輸入參數用python來換算 啓動程序輸入字符串./fd `python -c 'print 0x1234'`

原创 pwnable之simple login

首先下載源代碼發現讀入v6結果人家限制了長度剛好不溢出,然後base64解密v6放入v5長度記錄在v7v7還做了限制小於12個字符,但是auth函數中吧解密後的值放入了長度只有8的v4中由於可以溢出四個所以只能覆蓋ebp不能覆蓋eip,通

原创 pwnable之 fix

這次本以爲shellcode有錯找了好久也沒發現問題,最後在谷歌上面好不容易找到了別人的題解發現原來是棧被擡高時覆蓋了內存由於前面所以我們這次將push eax改成popesp來解決(具體爲什麼這兩句只差一個字符並不太清楚)然後我想用上面

原创 pwnable之uaf

這次用到了uaf大致原理就是剛剛釋放的內存如果立刻申請同樣或者相近大小的內存系統就會把剛剛釋放的內存給你新申請的內存,觀察程序後發現輸入3可以釋放內存然後輸入2就可以得當剛剛w和m的內存那麼應該如何控制eip那?這就需要了解一下虛指針對於

原创 pwnable之ascii

pwnable.kr ascii writeupMoto • 2016年8月22日 • 逆向破解 • 閱讀 1250程序只開啓了DEP在vuln函數中有一個很明顯的棧溢出但是輸入時會校驗是否爲ascii字符既然是本地利用,那就先ulimi

原创 執行shellcode

#include <stdio.h> #include <string.h> char *shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69" "\x6e