OSCP,OSCE3 Looking for a job in Japan
zjicmdarkwing / blogcomments Goto Github PK
View Code? Open in Web Editor NEWBlogComments
BlogComments
OSCP,OSCE3 Looking for a job in Japan
PartialOverwrite 只更改func@got低位两个字节的值,可以替换为前后0x0000~0xffff范围内的地址 修改的两个字节中,ASLR只影响高4位(低12位不受ASLR影响) 也就是说,即使不泄漏地址,也有1/16的概率调用到想要的地址 重写stack上返回地址的低位三个字节也是可能的 CAROP(potetisensei和自己命名) 意思是Calc&AdjustRO
https://darkwing.moe/2019/05/14/Tell-Me-Something/
题目信息 Do you have something to tell me? nc pwn.jarvisoj.com 9876 guestbook.d3d5869bd6fb04dd35b29c67426c0f05 checksec只开了NX 1234567$ checksec --file guestbook[*] '/Users/miao//CTF/PWN/guestbook/gue
Setup 下载题目文件到Linux系统环境中 http://shell-storm.org/repo/CTF/Defcon-22-quals/heap-1/ 文件名有点长,做下重命名 mv babyfirst-heap_33ecf0ad56efc1b322088f95dd98827c heap 赋予运行权限 chmod +x heap 运行 ./heap 不能运行的话,可
https://darkwing.moe/2019/05/20/XMAN-level4/
题目信息 nc pwn2.jarvisoj.com 9880 level4.0f9cfa0b7bb6c0f9e030a5541b46e9f0 32位elf,开了Partial RELRO和NX:
堆溢出 原理非常简单 数据溢出并覆盖下一个区域 如果下面有认证信息或重要数据,则可以破坏/覆盖
https://darkwing.moe/2019/04/23/ropasaurusrex-level3/
至今为止都是调用system(“/bin/sh”)的攻略方式 system()超甜 接下来在chroot环境下运行level2 system()隐式调用”/bin/sh” 调用system(command)时,内部是这样 execve(“/bin/sh”, &[“-c”, command, NULL], envp) 这意味着,chroot环境下,调用system会失败 需要一种没
https://darkwing.moe/2019/03/11/Arena%E5%AF%B9%E9%BD%90%E5%8F%8A%E6%80%BB%E7%BB%93/
Arena 1M对齐方法图解 想要的是这样的内存 但通过mmap做不到这一点
Unlink Attack什么是Unlik Attack 比较古老的一种攻击技术 之前的一些CTF比赛中出过这类题目 DEFCON CTF 2014 - Baby’s First: 1 – heap Linux x86二进制程序,之前的Doug Lea’s malloc是静态链接,可以进行简单的Unlik Attack PlaidCTF 2014 - Pwnables200 – ezhp Li
0x01 内存布局大部分Linux: .text 汇编代码 .data 有初始值的数据 .bss 无初始值的数据 heap 堆 shared object 共享对象区域(libc.so
连接及基本信息默认安装环境下: 12345678910111213141516root@ubuntu:/opt/xunfeng/xunfengdb/bin# ./mongo mongodb://127.0.0.1:65521/xunfengMongoDB shell version v3.4.0connecting to: mongodb://127.0.0.1:65521/xunfengMong
問題 運用保守担当者の間違いのため、イントラネット認証ページは外部ネットワークに展開されましたが、幸いにも、開発者はドメイン名の検証が行われました。 Writeup ソースコードを表示し、次のコードを見つけます: 123456789101112ini_set("display_errors",0); $uri = $_SERVER['REQUEST_URI&apo
漏洞类型及攻略方法全写出来不太可能,图示大概这样: Stack以x86环境为例 每个进程在内存区域底部都有一个stack
https://darkwing.moe/2019/03/21/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B08-fastbins-attack/
fastbins为了高速化而实现的机制 www.valinux.co.jp/technologylibrary/document/linux/malloc0001/ bins和fastbins 之前提到过libc中存在一个为了快速搜索free区域而存在的链表 这是arena(malloc_state构造体)中存在的列表头 free状态的chunk根据相似大小来管理,因此会有多个列表 si
https://darkwing.moe/2019/03/04/%E5%A4%9A%E7%BA%BF%E7%A8%8Block%E9%97%AE%E9%A2%98/
古典lock 很简单的,使用互斥锁来保护整个函数 实际想要这样
https://darkwing.moe/2019/05/17/XMAN-level3-x64/
题目信息 nc pwn2.jarvisoj.com 9883 Hint1: 本题附件已更新,请大家重新下载以免影响解题。 level3_x64.rar.8c74c402b190ac3fbef5a9ae540c40de 64位elf,只开了NX,并且给出了libc文件
https://darkwing.moe/2019/04/09/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B011-ret2libc/
ret2plt链的问题点 如果想要使用的函数不在PLT中,则无法构成链 ret2libc img 绕过NX2 - ret2libc想要使用的函数不在PLT时,应该怎么办? 源代码中未使用
https://darkwing.moe/2019/05/17/XMAN-level3/
题目信息 nc pwn2.jarvisoj.com 9879 Hint1: 本题附件已更新,请大家重新下载以免影响解题。 level3.rar.2047525b05c499c9dd189ba212bba1f8 32位elf,开了Partial RELRO和NX,并且给出了libc文件
https://darkwing.moe/2019/05/14/XMAN-level1/
题目信息 nc pwn2.jarvisoj.com 9877 level1.80eacdcd51aca92af7749d96efad7fb5 没开NX 静态分析IDA F5一把梭
0x00 概要$_SERVER[‘SCRIPT_NAME’]はPHP用の1つ組み込み変数です。ここでは、使用時には、一般的にフィルタリングされません。 fuzzの後、この変数の取得は実際に問題がある、予期しないデータが導入されます。 一部のWebサーバーでは、この変数を直接使用すると、SQLインジェクションまたはxssの脆弱性が発生する可能性があります。 0x01 テストApache/2.4.23
https://darkwing.moe/2019/02/28/small-bin%E4%B8%8Elarge-bin/
small bin 结构体大体上适合这个size,并不是best fit,只是just fit 分配器 进一步改进 不处理512字节之上的部分 但是,对于较大的size也用这种8bit单位
https://darkwing.moe/2019/04/12/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B013-ROP%E4%B8%8EDROP/
ASLR绕过 - 方式2在ASLR中,并非所有地址都是随机的 也可以利用.text区域 NX+ASLR绕过2 - ROPROP(Return Oriented Programming) 狭义:想要执行的代码细分后在.text区域搜索合并 RX权限,即能够执行的只有.text区域,因此想办法使用.text区域 广义:除了狭义的ROP之外,也包括ret2plt/ret2libc之类的伪造返
https://darkwing.moe/2019/04/01/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-%E6%80%BB%E7%BB%9301/
总结 这一次,主要解决与堆密切相关的漏洞 还有很多其他类型的漏洞 例如栈溢出,很有名并且很容易找到 条件竞争,整数溢出这类稍微有点难找 简单介绍一下其他漏洞 其他类型的漏洞栈缓冲区溢出 当输入数据超出栈上分配的内存末尾时,会产生这种溢出 可以通过重写返回地址来控制后续操作 如果启用了canary保护,那么会检测到stack被更改 特别情况,仅能超出一个元素,被称为Off-By-One Sta
0x01 工具 IDA Pro Linux x86 and x64 推荐Debian系列(Ubuntu,Debian,Kali,…) qemu gdb 自定义.gdbinit gdb-peda gdb script gdb -q -x cmd ./binary gdb-server C Python Perl Bash功能 /dev/tcp/<IPADDR>/<POR
https://darkwing.moe/2019/03/14/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B03-heap/
heap为什么提到堆: stack exploit类型的题目在很多CTF中都出现过 writeup简单学习下就能够理解 网络上也有很多相关资料 很少有CTF队伍主攻heap 主攻pwn的队伍都很少 通常这类问题分值较高 这是必须加强的部分 什么是堆 调用malloc()或者 new()时使用的是heap区域 heap区域中,”使用中”和”已free”的内存状态大不相同 详情可以通过小
https://darkwing.moe/2019/04/03/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B010-PLT-GOT%E4%B8%8Eret2plt/
PLT与GOTPLT(Procedure Linkage Table)与GOT(Global Offset Table) ELF文件调用库函数时,存在PLT入口和GOT入口 注意,静态链接库没有这些 是一种在libc.so等动态查找外部函数地址的机制 PLT解析外部地址,之后保存(缓存)在GOT中 如果有PLT入口,就可以在不知道函数实际地址的情况下去调用它 PLT作为代理跳转到真
https://darkwing.moe/2019/05/15/XMAN-level0/
题目信息 nc pwn2.jarvisoj.com 9881 level0.b9ded3801d6dd36a97468e128b81a65d 只开了NX 静态分析IDA F5,明显的
https://darkwing.moe/2019/03/04/%E5%BB%B6%E8%BF%9F%E5%90%88%E5%B9%B6/
回顾K&R free 现在free list head指向释放掉的节点 缓存和本地引用 对heap内存访问概率最高的是在malloc之后立即free 刚刚free的内存在缓存上
https://darkwing.moe/2019/03/05/Arena%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/
Arena生成 main_arena == 之前说明过的heap Arena生成thread2
https://darkwing.moe/2019/04/22/ropasaurusrex-level2/
ROP区域较小的情况 改变read的size 256字节 -> 160字节 限制写入size1$ xxd -p ropasaurusrex | sed -e 's/c744240800010000/c7442408a0000000/' | xxd -r -p > ropasaurusrex2 确认123456789$ diff <(objdump -d -M
https://darkwing.moe/2019/01/31/Android%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%E5%AE%9E%E6%88%98/
https://darkwing.moe/2019/05/09/%E8%BF%9B%E9%98%B6ROP%E5%8F%8Alibc/
有用的ROP技巧__libc_csu_init 从stack中将值加载到寄存器的通用gadget x86和x86_64中都存在,x86_64中这个会很方便 经常找不到pop rdi; ret这类,我们可以通过这种方式设置rdi 可以从stack经过r13设置rdi的值,但是需要注意只能设置32位,因为这里是edi而不是rdi alarm(x) 在x86/x64中,想要通过ROP设置E
https://darkwing.moe/2019/04/19/Plaid-CTF-2013-pwn200-%E2%80%93-ropasaurusrex/
Plaid CTF 2013 - pwn200 – ropasaurusrex 根据难度可以分成Level 1 ~ 5 Level 1(原始二进制)会详细讲解 后面的难度自行探索 ropasaurusrex攻略(Level 1)查看x86二进制文件文件可以在这里下载: http://shell-storm.org/repo/CTF/PlaidCTF-2013/Pwnable/ropasaurus
https://darkwing.moe/2019/02/15/Postbook-Writeup-Hacker101-CTF/
flag1随意注册账号后登录,发现已经存在的文章,两篇文章id分别为1和3,手动修改查看2即可获取:
特殊的Unlink AttackUnlink Attack的应用 HITCON CTF 2014上,有一道只有三支队伍解出的题目 Pwnables 550 - stkof 解出题目的是以下三支队伍: tomcr00se PPP teamlol 介绍一下用于解决这道题目的技术 这道题目是x86_64的二进制程序,但我会用x86的内存布局来说明它 注意,实际的二进制中,各个区域都是两倍
https://darkwing.moe/2019/02/28/mmap/
什么是匿名mmap? mmap最初是一个将文件映射到内存中的系统调用 但是,如果将”/dev/zero”作为fd参数传递,它可以用作内存预留API 使用此API,mmap可以直接从kernel中获取Huge Block(默认情况下超过128k字节),而不是从heap获取 再次回顾一下size的低位bit
0x00 open_basedir open_basedirは、指定されたディレクトリへのユーザアクセスを制限します。 つまり、ユーザーはサーバー上の指定されたディレクトリ以外のファイルにアクセスできません。 クロスサイトを防ぐためによく使用されます。 open_basedir=/home/wwwroot/home/web1/:/tmp/とすると、web1経由でサーバにアクセスするユーザは、サー
https://darkwing.moe/2019/03/14/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B04-heap%E5%B8%83%E5%B1%80/
heap布局 使用中和free区域混杂在一起 各个block被称为chunk 想要再次使用free状态的区域 需要知道哪里有free的区域,因此它是链表结构 实际上没这么简单
https://darkwing.moe/2019/02/22/%E5%A0%86%E6%89%A9%E5%B1%95%E5%8F%8Abrk/
堆扩展 因为堆并不是无限的,有时会出现空间不足的情况 这时候,我们会使用brk系统调用来扩展heap区域,brk是一个用来更改heap结尾地址的API
https://darkwing.moe/2019/02/25/K-R-malloc/
K&R malloc的优点 简单 代码大小很小(malloc仍然内置等) 除非有大量碎片空间,否则malloc是O(1) 复杂度 适用于小程序,整个程序中只使用几十次malloc K&R malloc的缺点 当小型malloc频繁出现时,会出现大量碎片空间 free是O(n)复杂度 在调用brk时,需要遍历freelist一次(如果有数万个列表,缓存、刷新、代码状态将是很恐怖的)
https://darkwing.moe/2019/03/07/arena%E7%94%9F%E6%88%90/
坏主意1从TLS获得arena 在获得自身专用的arena之前,有一部分是需要从main_arena中获取的,并且它必须返回给main_arena 坏主意2在每个malloc header中添加一个指向arena的指针 自寻死路,很多份4个字节 坏主意3从main_arena(唯一的全局变量)中延伸出arena的列表 检索复杂度是O(n) 结论? arena是固定内存1M对齐,谈后,我
ROP的问题点ROP需要一个较大的溢出缓冲区 因为只包含一些细分的小指令,要发送的数据不可避免的增加 如果在srack返回地址下没有较大的溢出,就会很糟糕 如果没有足够的溢出缓冲区该怎么办? stack pivot (https://raw.githubusercontent.com/zjicmDarkWing/images/master/2019041501.jpg) 溢出量问题绕过
0x00 概要 sleep、benchmark関数を使用できない場合,より多くの計算量を伴うクエリは,データベースのクエリ時間を長くし、遅延注入の効果を達成する。たとえば、mssqlはこのようなものを使うことができます: 1AND 2333=(SELECT COUNT(*) FROM sysusers AS sys1,sysusers AS sys2,sysusers AS sys3,sysuse
https://darkwing.moe/2019/04/12/Pwn%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B012-ASLR%E4%B8%8Ememory-leak/
ret2libc对策 – ASLRASLR(Address Space Layout Randomization) 主要是地址随机化 现代Linux内核中默认开启 ret2libc成功的原因是,libc之类的读取地址是固定的 因此如果每次运行时,libc之类的地址随机,是一个比较好的方式 12345miao# echo 2 > /proc/sys/kernel/randomize_va
https://darkwing.moe/2019/05/15/XMAN-level2/
题目信息 nc pwn2.jarvisoj.com 9878 level2.54931449c557d0551c4fc2a10f4778a1 开了NX和Partial RELRO 静态
https://darkwing.moe/2019/02/25/header%E7%9A%84%E7%BA%A6%E6%9D%9F/
header需要必要的约束 首先,分配的内存块不需要free list的指针,bk,fd等 可以简单的删除它 需要注意访问方法 当我们转向malloc_chunk结构体来访问它时,可以
https://darkwing.moe/2019/05/16/XMAN-level2-x64/
题目信息 nc pwn2.jarvisoj.com 9882 level2_x64.04d700633c6dc26afc6a1e7e9df8c94e 64位elf,只开了NX img 静
GOT overwrite对策 – Full-RELRO GOT可以重写会产生问题 Full-RELRO使其只读 这里整个section被设置为只读属性(只能在二进制启动时初始化写入),Full-RELRO (RELocation Read-Only) 编译选项: gcc -Wl,-z,relro,-z,now NX+ASLR+Full-RELRO绕过1 –ret2dl_runtim
https://darkwing.moe/2019/02/22/malloc%E5%8F%8Afree%E7%AE%97%E6%B3%95/
Linux中进程地址空间模型 古典的malloc
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.