Q1IQ's blog

Home

About

Archives

loading..
PWN

DefenitCTF 2020 wp

PWNerrorProgram漏洞分析这道题目的堆操作给了MALLOC、FREE、EDIT、VIEW,MALLOC只能分配[0x777,0x77777]的块,也就是只能操纵large bin,FREE和EDIT都可以随意UAF,VIEW没有限制。 题目给了假的栈溢出漏洞,程序会检查是否溢出并在溢出时exit退出。 给了假的格式化字符串漏洞,因为输入的字符串中不能出现%和$。 利用这道题目可以用今年四月份hatena提出的利用方式 house of husk,能够在有large bin UAF漏洞的情况下getshell。 https://ptr-yudai.hatenablog.com/entry/2020/04/02/111507 贴上学长大佬写的学习笔记:https://www.anquanke...

Read more
loading..
PWN

RCTF 2020 wp

bf1 程序分析题目是一个brainfuck的解释器,给的libc是2.27。brainfuck是一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种运算符构成,除了指令还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。 字符 含义 > 指针加一 < 指针减一 + 指针指向的字节的值加一 - 指针指向的字节的值减一 . 输出指针指向的单元内容(ASCII码) , 输入内容到指针指向的单元(ASCII码) [ 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 ] 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 题目逻辑是..

Read more
loading..
PWN

Linux kernel学习记录

本文是kernel调试的一点心得和总结。 kernel保护模式MMAP_MIN_ADDR : 不允许申请NULL地址 mmap(0,….) kptr_restrict: 查看内核函数地址 commit_creds和prepare_kernel_cred函数的地址都可以在 /proc/kallsyms 中查看(较老的内核版本中是 /proc/ksyms)。 一般情况下,/proc/kallsyms 的内容需要 root 权限才能查看 head -n 10 /proc/kallsyms grep commit_creds /proc/kallsyms grep prepare_kernel_cred /proc/kallsyms echo 0 > /proc/sys/kernel/k..

Read more
loading..
TOOL

调试工具rr

收获新工具 rr,功能差不多就是在gdb上加一个倒放功能,网上一搜居然没有中文资料,所以记录一下。github地址:https://github.com/mozilla/rr 以下安装配置基于Ubuntu16.04,其余环境可以参考官方文档。 安装配置安装依赖环境: sudo apt-get install ccache cmake make g++-multilib gdb \ pkg-config coreutils python3-pexpect manpages-dev git \ ninja-build capnproto libcapnp-dev 下载rr编译: git clone https://github.com/mozilla/rr.git mkdir obj &&amp..

Read more
loading..
PWN

IOFILE题目小结

源码调试要下载源码得先把sources.list的deb-src开头的注释去掉,更新一下 sudo apt-get update sudo apt-get upgrade 下载源码 sudo apt-get source libc6-dev 会报这么一个错,但是不影响用,暂且不管。 W: Can't drop privileges for downloading as file 'glibc_2.23-0ubuntu11.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) 在gdb里运行: directory ~/glibc/glibc-2...

Read more
loading..
PWN

vm Pwn题目小结

ez_op题目分析首先根据入口点找到main函数,一般入口点就是IDA里Export窗口的start函数。 可以看到上面main函数的逻辑是: 使用mallocinfo函数为操作数分配空间,为操作码分配空间。 读入操作码至buf中,并将其转换成整数形式保存在opcode中;操作数同理保存在oprand中 进入大循环loop函数,就是本题的虚拟机,后面详细讲解。 使用freeinfo函数释放分配的空间 loop函数就是虚拟机,主要逻辑是一个大循环,每次循环完成一个操作码对应的功能。那么怎么知道每个操作码对应什么功能呢,我觉得对我来说只能慢慢逆向+猜吧。这个题目的功能有save、load、push、pop、加减乘除,最后逆出来的效果就是下面这样: 漏洞点在于load和save都没有检查是否越界..

Read more
1234