- 博客(46)
- 收藏
- 关注
原创 ExploitExercises_Nebula_Level14
/home/flag14/flag14是一个加密程序,输入加-e参数,该程序将对输入数据加密后输出到终端:level14@nebula:~$ /home/flag14/flag14 -e12345613579; 逆向加密算法: v12 = *MK_FP(__GS__, 20); v8 = 0; if ( argc <= 1 ) goto LABEL_17;
2016-12-30 16:10:39 1037
原创 ExploitExercises_Nebula_Level13
题目源码中省略了token的计算过程:#include #include #include #include #include #define FAKEUID 1000int main(int argc, char **argv, char **envp){ int c; char token[256]; if(getuid() != FAKEUID) {
2016-12-30 15:12:28 732
原创 ExploitExercises_Nebula_Level12
程序源码为lua脚本:local socket = require("socket")local server = assert(socket.bind("127.0.0.1", 50001))function hash(password) prog = io.popen("echo "..password.." | sha1sum", "r") data = prog:read
2016-12-30 14:55:18 493
原创 ExploitExercises_Nebula_Level10
题目源码:#include #include #include #include #include #include #include #include #include int main(int argc, char **argv){ char *file; char *host; if(argc < 3) { printf("%s file
2016-12-30 11:53:19 615
原创 ExploitExercises_Nebula_Level09
题目给出一段PHP代码:<?phpfunction spam($email){ $email = preg_replace("/\./", " dot ", $email); $email = preg_replace("/@/", " AT ", $email); return $email;}function markup($filename, $use_me
2016-12-29 10:15:05 478
原创 ExploitExercises_Nebula_Level08
题目提供了一个capture.pcap文件:可以看到password部分输入,其中包括几处0x7F,查询ascii表,该值对应删除操作。还原删除过程,最终得到密码:bacjd00Rmatesu - flag08尝试登陆,成功。
2016-12-28 21:13:59 468
原创 ExploitExercises_Nebula_Level07
题目源码为一段perl脚本:#!/usr/bin/perluse CGI qw{param};print "Content-type: text/html\n\n";sub ping { $host = $_[0]; print("Ping results"); @output = `ping -c 3 $host 2>&1`; foreach $line (@
2016-12-28 21:13:43 1059
原创 ExploitExercises_Nebula_Level06
题目如下:The flag06 account credentials came from a legacy unix system.To do this level, log in as the level06 account with the password level06. Files for this level can be found in /home/flag06.
2016-12-26 17:31:40 445
原创 ExploitExercises_Nebula_Level05
题目如下:Check the flag05 home directory. You are looking for weak directory permissionsTo do this level, log in as the level05 account with the password level05. Files for this level can be found i
2016-12-26 17:28:14 518
原创 ExploitExercises_Nebula_Level04
题目余源码如下:#include #include #include #include #include #include int main(int argc, char **argv, char **envp){ char buf[1024]; int fd, rc; if(argc == 1) { printf("%s [file to read]
2016-12-26 16:26:36 656
原创 ExploitExercises_Nebula_Level03
题目设置定时任务,定时执行/home/flag03/writable.sh脚本:#!/bin/shfor i in /home/flag03/writable.d/* ; do (ulimit -t 5; bash -x "$i") rm -f "$i"done可以看到,该脚本去执行writable.d目录下的程序。获取shell过程如下:1.
2016-12-26 15:41:43 824
原创 ExploitExercises_Nebula_Level02
题目源代码:#include #include #include #include #include int main(int argc, char **argv, char **envp){ char *buffer; gid_t gid; uid_t uid; gid = getegid(); uid = geteuid(); setresgid
2016-12-26 13:33:44 465
原创 ExploitExercises_Nebula_Level01
题目源码如下:#include #include #include #include #include int main(int argc, char **argv, char **envp){ gid_t gid; uid_t uid; gid = getegid(); uid = geteuid(); setresgid(gid, gid, gid);
2016-12-26 13:32:33 1386
原创 Exploit_Nubula_Level00
题目如下:This level requires you to find a Set User ID program that will run as the “flag00” account. You could also find this by carefully looking in top level directories in / for suspicious looking d
2016-12-25 22:51:10 1063
原创 Openssl RSA操作
生成key对:openssl genrsa -aes128 -out pv.key 1024上面使用aes-128保护key,执行命令后要求输入密码,在导入key的时候需要输入密码。若不需要密码保护,则确定密码保护选项:openssl genrsa -out pv.key 1024从私钥中提取公钥:openssl rsa -in pv.key -pubout -out pb
2016-12-07 21:22:01 840
原创 Windows增加删除右键新建项
Windows下,鼠标右键新建默认有文本文档、Word等,若需要增加新的,比如ps, py等,则需要修改注册表。注册表HKEY_CLASSES_ROOT下有一系列.xx项,记录不同类型的文件扩展名,若存在子项ShellNew,则可以通过右键新建直接创建;相反,若需要删除新建项,则删除.xx项下的ShellNew子项。例如,要增加.py文件新建项,可以新建一个.reg,里面写入一下内容:
2016-11-26 11:17:09 6917
原创 傀儡进程原理及调试
傀儡进程创建过程:(1) CreateProcess一个进程,并挂起,即向dwCreationFlags 参数传入CREATE_SUSPENDED;(2) GetThreadContext获取挂起进程CONTEXT,其中,EAX为进程入口点地址,EBX指向进程PEB;(3) ZwUnmapViewOfSection卸载挂起进程内存空间数据;(4) VirtualAllo
2016-08-11 17:16:08 3322 1
原创 Ubuntu 16.04网络配置
安装完Ubuntu 16.04后,配置静态网络:vim /etc/network/interfacesauto eth0iface eth0address x.x.x.xmask x.x.x.xgateway x.x.x.x配置完成,重启网络服务:/etc/init.d/networking restart启动后,发现只有lo,查看日志,发现没有找到eth0设备。原来Ubunt
2016-07-18 14:48:10 50253 6
原创 脱壳基础
1. 定位OEP1.1 ESP定律(栈平衡)使用UPX对计算器calc.exe进行加壳。OD载入,如下:第一条指令PUSHAD表示将所有通用寄存器值压栈,这些值即代表原程序加壳前的值,在壳运行完成后,需要借助栈恢复这些值,程序转到OEP,原程序才能正常执行。F8向下走一步,此时ESP的值为压栈后的值:对该ESP值下硬件断点:HW 0007F
2016-07-13 10:22:27 951
原创 使用pefile解析PE文件格式
pefile用于解析PE文件格式,github提供下载使用,并给出了使用范例。https://github.com/erocarrera/pefileimport pefilepe = pefile.PE('notepad.exe')AddressOfEntryPoint = hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint)ImageBa
2016-07-06 17:04:21 3459
原创 HTTPS原理
HTTPS = HTTP + SSL/TLS,现在一般都使用TLS.HTTPS工作过程如下:1. 浏览器向服务器发送HTTPS请求,该请求中包含一个密文族,该族即为浏览器所支持的加密算法清单;2. 服务器从该清单中选择一种非对称加密算法,如RSA算法。3. 服务器向客户端传送证书,该证书包含2中非对称加密算法的公钥,也包括颁发机构、有效期等信息。服务器可以选择自己制作证书,也
2016-07-04 16:47:05 404
原创 加密解密之RSA
1. RSA加密解密key可以由generate生成,或者由construct构造,或者由importkey导入;2. RSA可以加密的单段数据长度受key的长度所限制,大量数据需分段加密;3. 目前推荐使用PKCS1_OAEP加密,PKCS1_V1_5可用于兼容老代码,但已不推荐使用;4. 根据RFC3447描述,若使用PKCS1_OAEP加密,单独数据最大长度为下图红框标识。例如,
2016-07-01 16:58:57 2958
原创 加密解密之AES算法
AES加密的数据块长度为128(16字节),密码长度可以为16,24,32字节。from Crypto.Cipher import AESfrom Crypto import Randombs = AES.block_sizepad = lambda s: s + (bs - (len(s) % bs)) * chr(bs - len(s) % bs)unpad = lambda s
2016-07-01 16:00:02 1688 1
转载 脱壳的常用方法
什么是壳大家应该先明白“壳”的概念。在自然界中,我想大家对"壳"这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(当然后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能
2016-06-29 09:47:49 512
原创 VS生成请求以管理员身份运行的程序
在程序开发中,有些程序由于特殊性,需要以管理员权限运行,若用户直接点击运行,则无法正常执行。为了在程序运行时通知用户授予程序管理员权限,需要在VS编译中进行设置:项目属性 -> 配置属性 -> 连接器 -> 清单文件,将“UAC执行级别”的值设置为“requireAdministrator (/level='requireAdministrator')”。
2016-06-24 17:35:57 921
原创 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
指定当编译器使用的异常处理类型、何时优化掉异常检查以及是否销毁由于异常而超出范围的 C++ 对象。 如果未指定/EH,则编译器将同时捕获异步结构化异常和 C++ 异常,但不会销毁由于异步异常超出范围的 C++ 对象。当出现如标题所示错误时,需要修改VS项目属性配置来解决:项目->属性->配置属性->C/C++->代码生成->启用C++异常,将值设置为“是 (/EHsc)”。具体
2016-06-24 14:53:38 11821 3
转载 使用inf文件安装文件系统驱动程序的三种方式
After you have created an INF file, you can use it to install, upgrade, and uninstall your file system filter driver. You can use the INF file alone or together with a batch file or a user-mode setup
2016-06-23 15:34:00 7162
转载 使用C++产生32位随机数
提到生成随机数,大多数人想到的是调用C++中的rand()函数,但是这里有个问题,rand()只能产生0~RAND_MAX(如在Visual Studio 2010上面最大为0x7FFF,即32767), 如果需要产生的随机数范围是0~232-1,则rand()函数会力不从心,需要使用其他更有效的方法来实现32位随机数的生成。 本文采用三种方法,分别为Mersenne twister算
2016-06-07 12:01:02 3429
原创 Android Apktool安装及使用
Android应用程序逆向过程中,Apktool无疑是使用最为广泛的工具之一。其安装也是非常简单。Apktool最新官方地址为:http://ibotpeaches.github.io/Apktool/官方给出了在Windows、Linux、Mac OS平台上的安装方式:http://ibotpeaches.github.io/Apktool/install/本文在Window
2016-06-05 16:53:18 1259
原创 Windows获取磁盘信息
Windows下磁盘相关操作:1. 使用FindFirstVolume, FindNextVolume查询所有磁盘;2. QueryDosDevice获取设备名称;3. GetVolumePathNamesForVolumeName获取路径信息,如C:, D:;4. GetDriveType获取磁盘类型,不同返回值代表的类型如下图:#include #include #
2016-05-27 14:36:14 2472
原创 Windows获取时间
在Windows下获取时间常用的API有:GetLocalTime(), GetSystemTime(), GetTickCount(),以下说明三者的用法及差别。(1) GetLocalTime该函数用于获取本地时间,精确到毫秒级。函数声明如下:void WINAPI GetLocalTime( _Out_ LPSYSTEMTIME lpSystemTime);函数将获取到的时
2016-05-24 15:10:28 1580
原创 Windows驱动开发蓝屏(代码:0x0000007f)
刚开始做驱动开发,编译了一个微软官方的例子,使用.inf安装驱动后,使用net start xx启动服务,但是却出现蓝屏。最终发现是因为兼容性原因,使用VS 2015、WDK 10编译的是时候默认生成windows 10驱动,由于我在Win7下测试,从而导致蓝屏。解决方法如下:项目属性 -> Deriver Settings -> General -> Target OS Versio
2016-05-05 21:43:26 2230
原创 无法定位程序输入点xxx于动态链接库kernel32.dll
程序运行中出现如标题所示的错误,通常来讲,这是由于系统平台不兼容导致,比如在Win7系统上开发过程中使用了Win8以后才支持的API。比如,我在win7上使用了UnmapViewOfFileEx这个函数,然后程序运行后就出现了“无法定位程序输入点UnmapViewOfFileEx于动态链接库kernel32.dll”的错误提示。查询MSDN,发现该API使用平台要求为Win8及以上,因此无
2016-05-03 18:05:55 35209
原创 警告被视为错误 - 没有生成“object”文件
在使用vs编译程序的时候碰到如标题所示的错误提示,网上找的方法都不好使,后来发现就是简单的函数返回值不匹配问题。举例如下:HANDLE PsGetProcessId( _In_ PEPROCESS Process);PsGetProcessId返回值应该为HANDLE,若是在调用的时候将其赋值给其他类型的变量,如int,将导致该类错误。int pid = PsGetProce
2016-05-03 15:21:59 1541
原创 Windows遍历目录文件
可以使用FindFirstFile, FindNextFile, FindClose遍历指定目录下的目录和文件。以下函数遍历并打印指定路径path下的所有文件和目录:#include #include #include #include #include void FileTraverse(TCHAR *path){ //_tprintf(TEXT("\nPath: %s
2016-04-27 15:07:59 917
原创 Python 获取本机ip地址
通过socket.gethostbyname(socket.gethostname())的方式只能获取到自环网地址127.0.0.1,要获取到其他网卡(如eth0)ip地址,需通过ioctl实现:import socketimport fcntlimport structdef getip(ifname): try: s = socket.socket(sock
2016-04-19 22:42:29 829
原创 Python浅拷贝和和深拷贝
Python提供了copy模块,用于对象的拷贝操作,包括copy和deepcopy两个函数,分别用于浅拷贝和深拷贝,以下分析两者的差异:1. 父对象中包含可变对象首先给出一个例子:import copya = [1,2,3,['abc','def']]b = a #对象引用c = copy.copy(a) #浅拷贝d =
2016-04-17 17:48:40 380
原创 安全类技术博客收集
持续关注具有价值的安全技术网站、技术博客,不但能获取第一手的安全资讯,还能通过技术分析文章提升技能。本文收集了部分高价值技术网站,并持续更新中。。。https://blogs.sophos.com/http://www.malware-traffic-analysis.net/http://nagareshwar.securityxploded.com/http://www.blee
2016-04-14 21:39:59 487
原创 解决VS“无法解析的外部命令”
在使用VS编译的时候通常碰到“无法解析的外部命令”或者“无法解析的外部符号”等错误提示,这是因为使用了外部库的原因,解决方法如下:(1) 添加#pragma comment(lib, "libName")(2) 项目属性 -> 链接器 -> 输入 -> 附加依赖项,添加所需lib文件名。
2016-04-12 15:51:40 15595
原创 Windows Dll注入与API HOOK
DLL注入:1. 使用注册表注入dllHKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLsAppInit_Dlls中设置待注入的dll绝对路径LoadAppInit_Dlls值设为12. 使用Windows挂钩注入dll需要使用SetWind
2016-04-11 17:07:59 2971
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人