CTF
真岛忍
这个作者很懒,什么都没留下…
展开
-
expect实现oscp openvpn账号密码自动连接
每次连接openvpn都要输入账号密码很麻烦,写个脚本,提前装好expect,输入expect检查有没有装好,kali应该是自带的#!/bin/expect set timeout 30 spawn openvpn 文件.ovpnexpect "Enter Auth Username:"send "账号\r"expect "Enter Auth Password:"send "密码\r"interact参考文章https://blog.csdn.net/qq_37960324.原创 2021-07-18 16:33:44 · 1050 阅读 · 0 评论 -
buu刷题 WEEK1
文章目录WEB [ZJCTF 2019]NiZhuanSiWeiREAL [ThinkPHP]5-RceWEB [ZJCTF 2019]NiZhuanSiWei三个参数 text,file,password,先看逻辑,要text和welcome to the zjctf相等,才能进入if,否则只是高亮本文件。涉及到data伪协议?text=data:text/plain,welcome to the zjctfphp://input?file=php://filter/convert.bas原创 2020-12-06 21:40:40 · 471 阅读 · 0 评论 -
【八芒星计划】静态编译劫持fini_array
引用:https://www.freebuf.com/articles/system/226003.htmlhttps://bbs.pediy.com/thread-259298.htm文章目录前言一、Memory Monster II总结前言直接先说使用方法:fini_array[1]放想要调用的地址addrA,fini_array[0]放__libc_csu_fini的地址,就可以无限调用addrA也可以用来栈迁移fini_array[0]放leave,ret,fini_array原创 2020-09-05 14:09:50 · 444 阅读 · 0 评论 -
【八芒星计划】 _IO_2_1_stdout_和_IO_2_1_stdin_ 的任意地址读和任意地址写
文章目录前言一、GKCTF2020]Domo总结前言这篇记一下任意地址读和任意地址写_IO_2_1_stdout_的任意地址读,_IO_write_base为读取的起始地址,_IO_write_ptr为读取的末地址,并且flag的值要得是0xfbad1800才能正常读取 _IO_2_1_stdin_的任意地址写跟_IO_2_1_stdout_的任意地址读类似,也是需要控制flag还有_IO_buf_base和_IO_buf_end。这回除了flag、_IO_buf_base和_IO_b原创 2020-09-04 18:28:31 · 851 阅读 · 0 评论 -
wdb2018_guess fork()和wait()的问题
这个问题困扰了我,程序动脑不如动手,就写了一个程序来判断,问题的来源是wdb2018_guess 这道题他fork()了三次,却只有3次gets(),我想着明明有4个进程,为什么只gets了3次#include<stdio.h>#include <sys/types.h>#include <unistd.h>#include<sys/wait.h>int main(){ int stat_loc; int i=0; int n=3; in原创 2020-09-02 22:08:26 · 370 阅读 · 0 评论 -
【八芒星计划】pwn python PIE爆破脚本绕过ASLR 覆盖后几位
from pwn import *from LibcSearcher import * import timelocal_file = './magic_number'local_libc = '/root/glibc-all-in-one/libs/2.23/libc-2.23.so'remote_libc = '/root/glibc-all-in-one/libs/2.23/libc-2.23.so' select = 0if select == 0: r = pro原创 2020-09-02 21:31:33 · 3468 阅读 · 0 评论 -
【八芒星计划】绕过canary
文章目录wdb2018_guesswdb2018_guess有趣的题目,本题fork了三次,那么就会gets三次利用三次gets和canary,我们可利用stack smash来获得三次信息第一次获得libc,第二次获得栈地址,第三次获得flag覆盖argv[0],也就是程序名所在的位置先用puts的got来获得libcbase,用libcbase获得environ的地址,也就是stack_end,位置是utf8的位置然后第二次输入通过environ来获得stack的地址第三次就可以原创 2020-09-02 22:09:16 · 648 阅读 · 0 评论 -
【八芒星计划】 ret2__libc_csu_init
文章目录前言一、wdb2018_impossible总结前言__libc_csu_init是64位程序中通用的一个函数,这个函数是用来对 libc 进行初始化操作的,而一般的程序都会调用 libc 函数,所以这个函数一定会存在,我们要利用其中的gadget如何寻找init:或者在start的rcx里rdi <- mainrcx <- __libc_csu_init //在main函数前执行r8 <- __libc_csu_fini//在main函数后执行我们要使用原创 2020-09-02 19:54:13 · 1031 阅读 · 0 评论 -
【八芒星计划】 House of Orange
文章目录前言CISCN2020 nofree总结前言House of Orange是一种用来应对heap题中没有free的情况的方法,通过把top chunk的size改小,然后申请一个大于topchunk的size的chunk来把旧的top chunk放入bin中(可以是fastbin,也可以是unsortedbin)使用条件有:①可以修改topchunk的size②伪造的 size 必须要对齐到内存页③size 要大于 MINSIZE(0x10)④size 要小于之后申请的 chunk.原创 2020-09-02 18:55:51 · 363 阅读 · 0 评论 -
【八芒星计划】 劫持_IO_2_1_stdout_泄露libc
这一篇讲劫持_IO_2_1_stdout_泄露libc,应用在没有show的heap题里,首先申明,所有的都需要爆破,并且2.27由于tcache的存在使得2.27的劫持_IO_2_1_stdout_比2.23简单文章目录CISCN2020 easyboxsmajCISCN2020 easyboxslibc2.23off by one+劫持_IO_2_1_stdout_有add和freeadd(0, 0x18, 'a')add(1, 0xf8, 'a')add(2, 0x68, 'a'原创 2020-09-02 00:10:20 · 1034 阅读 · 0 评论 -
【八芒星计划】 ORW
本篇用来记录ORW,ORW可以分为2.27以下的orw和2.29以上的orw,如果是本地请自备flag文件orw技术是用来应对沙盒的文章目录oooorder2019-BALSN-CTF-plaintextoooorder本题是2.27的orw,漏洞是uaf,漏洞在这里不展开讲,uaf也并不难2.27的orw既可以使用heap_addr,也可以不要,先讲不需要heap_addr的,毕竟能少泄漏就少泄漏最重要的是使用了setcontext这个函数,来达成我们控制寄存器的目的2.27得setcont原创 2020-09-01 22:36:54 · 3881 阅读 · 1 评论 -
【八芒星计划】 VM PWN
这篇用来记录VM PWN先申明本篇文章资料来源:https://blog.csdn.net/weixin_44145820/article/details/106600382https://www.anquanke.com/post/id/208450#h2-1https://xz.aliyun.com/t/6865文章目录[OGeek2019 Final]OVMvm pwn最关键的就是逆向相关程序,理解每个指令的作用,漏洞大多数都是数组越界先介绍一些基础的概念:1.虚拟机保护技术所谓原创 2020-09-01 21:34:45 · 462 阅读 · 0 评论 -
【八芒星计划】 OFF BY NULL
八芒星计划是我为了加深自己对于pwn各种题型的理解发起的,我会将平时遇到的题型相似的题目放在同一篇文章里,方便自己和他人查阅,同时也可能会录制相关的视频,来加深自己的映像,并且把知识点更细致地讲述给大家。这一篇全部记录off by null文章目录2019-BALSN-CTF-plaintext2019-BALSN-CTF-plaintext【2.29的off by null,借助large bin的会留下指向自己的指针的特性,来伪造fake chunk,达成off by null】本题进行原创 2020-08-31 20:12:16 · 920 阅读 · 0 评论 -
kali下docker的使用
文章目录基本操作docker 镜像使用停止容器删除容器删除镜像 要先停止对应的容器docker基本操作启动sudo service docker start停止sudo service docker stop重启sudo service docker restartdocker 镜像使用加载镜像docker load -i babyjsc.tar创建容器docker run -it 106edb0b43a3 /bin/bash镜像重命名docker tag原创 2020-08-27 19:25:12 · 1629 阅读 · 0 评论 -
buuctf node和本体互换修改free_got为system 整数溢出 32位house of force 数组越界改ret
文章目录npuctf_2020_easyheapwustctf2020_number_gamenpuctf_2020_easyheap这题和之前的hitcontraining_heapcreator一样……让node和本体互换就行了exp:from pwn import *from LibcSearcher import * local_file = './npuctf_2020_easyheap'local_libc = '/root/glibc-all-in-one/libs/2.原创 2020-08-18 11:50:28 · 486 阅读 · 0 评论 -
buuctf 基础sql Group_concat() 伪协议 ᴬᴰᴹᴵᴺUnicode欺骗 各种绕过(内敛绕过) 菜刀
[极客大挑战 2019]LoveSQL+ 表示空格(在URL中不能使用空格) %2B/ 分隔目录和子目录 %2F? 分隔实际的URL和参数 %3F# 表示书签 %23& URL中指定的参数间的分隔符...原创 2020-08-16 12:33:17 · 657 阅读 · 0 评论 -
buuctf ciscn_2019_final_5 calloc整理机制修改tcache的fd puts \0泄漏 signal信号
ciscn_2019_final_5有趣的题目涉及位级操作漏洞的关键是index为16时,二进制为1 0000edit他们都是认heap_ptr里最后一个16进制来判断他是index几的,index1最后一位就是1,2就是2,8就是8,4就是4,但问题是他存储是按照你申请的顺序存的,和这个index没啥关系,漏洞就来了这题很明显是要你改got表没有show,就把free改成puts来泄漏exp:from pwn import *from LibcSearcher import ...原创 2020-08-14 10:30:06 · 564 阅读 · 0 评论 -
buuctf 强制转换无符号数溢出 任意地址读、跳转 _printf_chk free_hook jmpesp scanf输入过长触发malloc
文章目录zctf2016_note2zctf2016_note2本题的漏洞在这里有符号数和无符号数进行了比较,转换为无符号数, 我们把size设为0,那-1就永远大于i,就可以溢出了本题可以改got表,heap_ptr的地址也可以找到,那就unlink改成这样就行,利用chunk1的溢出然后改atoi为system, 输入sh就行了exp:from pwn import *from LibcSearcher import * local_file = './note2'loca原创 2020-08-06 15:15:02 · 1171 阅读 · 0 评论 -
IO_file attack(_IO_str_finish)以及 free_hook用法
题目是0ctf_2017_babyheap漏洞是堆溢出free_hook参考链接:https://xz.aliyun.com/t/7020https://bbs.pediy.com/thread-230028.htmhttps://bbs.pediy.com/thread-246786.htmfree_hook在libc2.23中用起来比较费劲,2.27中用的比较多free_hook可以在og用不了的时候来system(binsh),但我为什么不realloc_hook呢?因为f原创 2020-08-04 21:43:48 · 1036 阅读 · 0 评论 -
buuctf realloc _IO_2_1_stdout_泄露libc地址 32位格式化字符串 UAF diff SSH SCP jmp-rsp orw seccomp_tools
文章目录roarctf_2019_realloc_magicroarctf_2019_realloc_magic贴几个链接:https://blog.csdn.net/weixin_44145820/article/details/105585889https://blog.csdn.net/seaaseesa/article/details/105590591https://blog.csdn.net/weixin_42151611/article/details/99228675exp:原创 2020-08-01 20:01:03 · 704 阅读 · 0 评论 -
buuctf DSACTF7月pwn 栈迁移 ret对齐 修改bss的内容 lea esp, [ecx-4] 64位格式化字符串修改got
文章目录actf_2019_babystackactf_2019_babystack栈迁移,注意ret对齐没对齐的:对齐的:exp:from pwn import *from LibcSearcher import * local_file = './ACTF_2019_babystack'local_libc = '/root/glibc-all-in-one/libs/2.27/libc-2.27.so'remote_libc = '/root/glibc-all-in-o原创 2020-07-27 10:26:24 · 1560 阅读 · 0 评论 -
ls -ali $0 shellcode 任意地址改4字节 unlink house of force 拟态防御
文章目录rcirci考察ls -ali显示inode在tmp目录下创建0x2f+1个文件夹,然后随机进入一个ls -lai 来显示当前目录的 inode, 再去tmp目录下ls -ali显示inode,找到相同的,绕过strcmp然后$0来实现sh,绕过check2没exp,直接nc第一个...原创 2020-07-23 09:59:32 · 426 阅读 · 1 评论 -
buuctf刷题 system参数取后面部分 shellcode House of Force 格式化泄漏base和libc unlink
wustctf2020_getshell_2wustctf2020_getshell_2有system和奇怪的参数,用参数的后面部分sh就好ida里按g可以找地址exp:from pwn import *from LibcSearcher import * local_file = './wustctf2020_getshell_2'local_libc = '/root/glibc-all-in-one/libs/2.23/libc-2.23.so'remote_libc =原创 2020-07-19 11:13:48 · 493 阅读 · 0 评论 -
[V&N2020 公开赛]babybabypwn (SROP和orw)
本题使用了SROP和orw来获得flag第一个函数是缓冲区,第二个函数是沙盒,第三个函数是漏洞所在沙盒把59禁了,那就是exceve不能用了这里syscall的参数是15,那就是SigreturnFrame,那我们就用SROPSROP可以使用pwntool自带的工具SROP的使用条件:需要注意的是,我们在构造ROP攻击的时候,需要满足下面的条件可以通过栈溢出来控制栈的内容需要知道相应的地址“/bin/sh”Signal Framesyscalsigreturn需要有够大的原创 2020-05-30 11:11:52 · 1031 阅读 · 0 评论 -
BJD3rd(DASCTF) pwn部分题目整理 (oj, stack_chk_fail, __libc_csu_fini, mprotect, init, orw,汇编)
TaQiniOJ-0#include “/home/ctf/flag”@YMemory Monster I有canary,利用触发canary时的__stack_chk_fail和题目的任意地址任意写,改写__stack_chk_fail为backdoorexp:from pwn import *from LibcSearcher import * local_file = './Memory_Monster_I'local_libc = '/lib/x86_64-li...原创 2020-05-26 11:56:11 · 1466 阅读 · 0 评论 -
buuctf gyctf_2020_borrowstack(栈迁移)和r2t4,axb_2019_fmt32(格式化字符串和fmtstr_payload工具的使用)
头痛,之前栈学的漏洞好多,只学了相关知识没有做题,真正碰到题目就不会了,真的头痛gyctf_2020_borrowstack栈迁移payload设置 此种攻击方法的关键在于如何同时控制ebp和eip,那么如何同时控制ebp和eip的值的?1、使用ROPgadget查找leave;ret指令所在的地址2、覆盖完成bufer后,使用可控制的地址覆盖ebp的值,使用上述leave;ret指令所在地址覆盖ret的值。程序运行(32位,64位同理):1、当函数正常返回时,执行leave;re原创 2020-05-24 18:15:38 · 1304 阅读 · 0 评论 -
orw (pwnable_orw和[V&N2020 公开赛]warmup)和 picoctf_2018_rop chain 记录笔记
学到一种新的做法,orw(open,read,write),可以用在system,fork syscall(不能打开子进程,需要在当前进程里读入flag并输出) 和execve被禁的情况下打印出flag,还有seccomp虽然还不太懂,但先记录一下目前的理解seccomp安全机制能使一个进程进入到一种“安全”运行模式,该模式下的进程只能调用4种系统调用(system call),即 read(), write(), exit() 和 sigreturn(),否则进程便会被终止。著作权归作者所有。商业转原创 2020-05-21 19:06:40 · 1309 阅读 · 0 评论