- 博客(111)
- 资源 (7)
- 收藏
- 关注
原创 linux命令反混淆沙箱小记
谈起linux命令混淆,就不得不提强大的bash -x命令,他会把执行的sh脚本命令都打印出来,这里就不再累赘,细节可以参考qiye大佬的文章-。其中考虑到安全&速度问题,提到了对bash功能的改造,其实修改非常简单,只需要废弃掉关键执行函数shell_execve即可,这样就可以达到既能打印命令,同时不执行外部命令的目的。
2023-03-11 23:56:20
491
原创 C语言SYN扫描
原理首先需要了解下TCP连接过程,经典的三次握手,如下:1、扫描端向目标端发送SYN请求建立连接 2、目标端收到请求后,回复ACK同意连接并同意发送SYN请求建立连接 3、扫描端收到后,发送ACK同意,此时三次握手完成,以此来判断端口是否存活SYN扫描过程为:1. 扫描端向目标发起SYN请求建立连接。2. 目标同意SYN请求建立连接。3. 扫描端接收后,发送RST断开连接。扫描端发送SYN数据包后需要通过原始套接字调用recvfrom获取数据包状态。端口状态的判断:
2021-09-14 20:57:09
2615
1
原创 Linux Hook方法
linux hook是一个非常常见且成熟的技术,用户态Hook的方法有很多中,本次主要记录下LD_PRELOAD动态链接库劫持方法。LD_PRELOAD是一个全局变量,linux程序在运行时会优先加载该路径变量下的动态链接库,因此我们只需要通过设置LD_PRELOAD加载我们编写的同名函数,后续的加载过程中就会忽略后面的同名函数,从而完成对系统库的劫持。一般情况下linux动态加载库的顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/l
2021-09-13 14:46:20
1203
原创 Flogo编写Activity指南
生成基础框架首先使用官方的示例模板,并创建自定义Activitygit clone https://github.com/project-flogo/corecp -R core/examples/activity/* /myNewActivityMetadata第二步就是更新activity的meta信息,信息都在descriptor.json文件中,其中包含组件名称、版本、输出输出等信息。 name: The name of the activity (this should
2020-12-30 16:23:33
971
原创 CodeQL 代码审计平台学习笔记
CodeQL是一款代码审计分析平台,它将Python、Go、JavaScript等语言解析生成语法树并存储到数据库中,之后通过QL语法进行代码审查与筛选。你可以按照自己的想法写代码审计检测脚本,甚至进行代码漏洞 OR 恶意检测。安装 下载CodeQL二进制文件 wget https://github.com/github/codeql-cli-binaries/releases/download/v2.2.4/codeql-linux64.zip 下载语言库依赖 wget htt
2020-08-20 11:34:12
1025
原创 php Zend虚拟机的两种hook方式
前言这节讲一下PHP 的hook的两种方式,opcode handler hook和method hook,没有然后。handlerPHP提供了内置opcode handler替换函数zend_user_opcode_handlers。ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler_t handler){ if (opcode != ZEND_USER_OPCODE) { if
2020-06-08 20:12:31
767
原创 php扩展初探(三): taint解析
前言终于可以抽点时间说下taint了。源码解析taint的安装就不提了,普通的扩展安装即可。taint主要由三部分构成,污点标记、污点传播、污点沉降。污点标记taint在php7中的标记是在_zend_string中的内存回收u.v.flags字段中,如下:typedef union _zend_value { zend_long lval; /* long value */ double dval; /* ...
2020-05-28 21:08:36
609
1
原创 NGINX PHP Redis Mysql性能瓶颈提升小计
最近在弄个环境,使用PHP作为开发语言,辅助NGINX、Redis、Mysql进行架构设计,这里记录下性能提升的几个点。PHP-FPMphp-fpm是一种多进程模型,来了一个请求就会分配一个进程去处理,处理完成之后进行销毁,通过修改www.conf提升php-fpm的处理效率。; static - a fixed number (pm.max_children) of child processes;; pm.max_children - the ma
2020-05-21 10:29:09
412
原创 Python多进程与requests
最近在部署一个比赛环境,其中有一个需求,去一个服务器不断拉取文件进行分析,然后向这个服务器反馈分析结果。问题一初步使用多进程生产消费者模型,由于分析速度慢,拉取速度快,这个时候就出现一个重复拉取的问题,比如A文件拉取过来,然后扔给消费者处理,等了一会还是没有消费完,这个时候生产者又开始拉文件了,导致A文件又被拉取一次。为了避免这个问题,设置一个全局共享变量,生产者一次性拉取若干文件,然后交给...
2020-04-19 13:23:46
882
原创 PHP 扩展编写(二)
前面我们说了一个简单的PHP扩展的编写与实现,本次实现一个具有功能的复杂扩展。求和函数phpadd求和函数需要接受参数,先来看下参数的写法。参数的提示与校验是通过ZEND_BEGIN_ARG_INFO_EX、ZEND_BEGIN_ARG_INFO两个宏定义函数完成的。,其中的ZEND_ARG_INFO设置了参数是否为引用、参数标识以及是否为可选参数等,本示例中,我们接受两个参数,均...
2020-04-05 16:01:10
322
原创 PHP 扩展编写(一)
生命周期说到PHP扩展,需要先简单了解下PHP的生命周期,意义在于说明这个扩展在什么时候是生效的。在CLI模式下,PHP的执行过程主要分为5大部分,分别是模块初始化(php_module_startup)、请求初始化(php_request_startup)、执行(php_execute_script)、请求关闭(php_request_shutdown)和模块关闭(php_module_...
2020-04-04 22:58:24
225
转载 php中地址引用&的真正理解-变量引用、函数引用、对象引用
php的地址引用(就是在变量或者函数、对象等前面加上&符号)最重要就是删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁,在php中引用的意思是:不同的名字的变量访问同一个变量的内容。一、变量的引用 PHP 的引用允许你用两个变量来指向同一个内容:$a = "ABC";$b =& $a;echo $a;//这里输出:ABC echo $b;/...
2020-01-17 16:49:34
529
原创 IRMA源码解析(二)
这次来分析下IRMA引擎扫描过程,IRMA支持的扫描模式一般为1. 通过命令行调用杀毒引擎2. 扫描文件3. 解析扫描结果,并输出报告这里IRMA提供了针对该类型的通用型模板。先从主扫描入口类AntivirusPluginInterface开始分析class AntivirusPluginInterface(object): """ Antivirus Plugi...
2019-12-30 19:14:21
307
1
原创 IRMA源码解析(一)
IRMA是一款类似于VT的杀软检测工具,他可以集成大量的杀软针对文件进行静态特征检测,框架写的还是挺不错的,这里剖析下他的源码。先上一张官方的原型图。IRMA主要有三个部分组成,FRONTEND、BRAIN、PROBES,其中FRONTEND主要负责前端接口,BRAIN负责任务调度以及文件传输,PROBES是核心的检测模块,会部署很多杀软进行文件检测。IRMA Probes使用cele...
2019-12-19 09:54:18
380
原创 Python MetaClass元类解析
最近学习了下MetaClass元类的原理与使用,今天总结下,以备后用。首先需要树立一个元类的概念。Python中的类其实也是一个对象,不过该对象拥有创建对象的能力。那么普通的class就是从元类metaclass中来。class ObjectTest(object): passmyobj = ObjectTest()print myobj<__main__.Objec...
2019-12-17 11:25:33
154
原创 IRMA部署小计
其实Cuckoo的部署还算简单,主要就是他的一些引擎部署非常麻烦,以IRMA为首,这里记录下IRMA部署可能会遇到的问题。在IRMA部署之前,首先需要了解两个自动化部署工具,一个是vagrant,另外一个是ansible,两个都是批量自动化部署的神器,只需要写入脚本便可自动化安装部署,但是其中的坑也特别多。(1)首先是vagrant环境。(venv)$ export VM_ENV=d...
2019-11-29 14:15:07
337
原创 正则小记
首推两个不错的正则工具: https://regexper.com/ https://regex101.com/1. ^单独使用时表示匹配字符串开始的位置,在[^abc]中使用时表示非。2. 正则中的两种匹配模式:贪婪模式、非贪婪模式,可以使用?表示。就应用意义而言,在匹配成功的前提下,贪婪模式表示尽可能匹配到多的字符串...
2019-08-30 10:26:00
184
1
原创 Android Handler机制
0x01 Handler的作用Handler主要用于在工作线程中更新主线程的UI操作。0x02 实现方式Handler的实现方式有两种,一种是通过Handler.sendMessage()、另外一种是通过Handler.post()。事实上两种方式的本质是一样的。0x03 简单使用1.Handler.sendMessage() // 在主线程中创建Hand...
2019-07-23 13:23:33
153
原创 记一次Android So错误定位
在Android USB外接摄像头开发时,Android 9.0上使用到UVCcamera会遇到了一个拔掉闪退的bug,bug定位很久才找到原因,固有此文。0x01 远程调试USB外接摄像头因为要占用type c接口,所以必须要远程调试。这里使用mate20远程调试,需要注意一点,要在设备中开启`"仅充电"模式下允许ADB调试`。插上数据线,之后在同一WIFI环境下。adb ...
2019-05-14 11:08:02
3173
8
原创 Xposed折腾笔记(二)-微信骰子我做主
翻阅了一些资料,也来折腾下微信骰子0x01 定位随机函数这里也只是猜测,看到大佬的文章说可能用到Radnom函数,因此本次的思路便是Hook所有的Random函数,然后发送骰子,查看调用堆栈信息,找到定位函数。public class XposedInit implements IXposedHookLoadPackage {String TAG = "hooktest";@...
2019-03-03 16:28:23
3161
原创 Xposed折腾笔记(一)
最近花点时间折腾了下Xposed框架,还挺有意思,这里记录下学习过程0x01 Xposed介绍Xposed是一个基于Android的Hook框架,他的基本原理大概是替换了系统的app_process,之后com.android.internal.osZygoteInit.main()被替换成了:de.robv.android.xposed.XposedBridge.main(), 以...
2019-03-02 22:36:23
364
转载 ARM指令英文全称及功能
指令格式: 指令{条件}{S} {目的Register},{OP1},{OP2} "{ }"中的内容可选。即,可以不带条件只有目的寄存器,或 只有目的寄存器和操作数1,也可以同时包含所有选项。“S” 决定指令的操作是否影响CPSR中条件标志位的值,当没有S时指令不更新CPSR中条件标志位的值 ...
2018-11-29 10:11:15
1500
转载 Android 反编译利器,jadx 的高级技巧
一、前言今天介绍一个非常好用的反编译的工具 jadx 。jadx 的功能非常的强大,对我而言,基本上满足日常反编译需求。jadx 优点:图形化的界面。 拖拽式的操作。 反编译输出 Java 代码。 导出 Gradle 工程。这些优点都让 jadx 成为我反编译的第一选择,它可以处理大部分反编译的需求,基本上是我反编译工具的首选。接下来我们就来看看,jadx 如何使用吧。...
2018-10-07 21:16:47
925
原创 玩转Python并发
问题描述:一个简单的生产者消费者模型,假设每0.5秒生产一个数据,而花费1秒消费一个数据。0x01 多线程之一一个生产者线程、一个消费者线程import threadingimport timeimport queue# 全局线程锁lock =threading.Lock()# 生产对象def produce(q,n): for x in range(n)...
2018-08-14 20:01:55
493
原创 update注入的一个小trick
0x01 Mysql特性Mysql中update语句的定义如下:UPDATE table_name SET field1 = new-value1, field2 = new-value2[WHERE Clause]但是偶然发现,field1与field2两字段可以同名,并且UPDATE之后的字段内容会以field2的赋值为准。如上图中,Link字段被赋值了两次,最终的该Link字段的内容以最后...
2018-06-18 18:50:41
341
原创 Python中的多线程与队列
0x01 线程锁既然说到多线程,就会经常遇到多个线程共同操作一个单元或空间的情况,对该单元进行修改、获取等操作,为了避免各线程间的混乱操作,保证线程同步的正确性,很有必要引入线程锁的概念。线程锁,顾名思义,表示某一单元或空间只为某一线程所有,此时其他线程均无法进行操作,等待该线程操作完成并释放锁之后,其他线程才可继续利用该单元。Python中线程锁的用法很简单,使用Thread对象中的Lock方法...
2018-06-18 18:11:40
5468
1
原创 从文本预处理到TF-IDF权重计算(一)
前言最近在看些自然语言处理的知识,这里分享下语言处理的过程。一般而言,自然语言预处理包含分词、去停用词、权重计算等。0x01 nltk库安装这里以nltk库为例。nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集。安装nltk库pip install nltk下载必要数据集进入python终端。import nltknltk.downlo...
2018-05-09 22:24:09
1417
原创 科威盒子导航系统代码审计过程总结
前言还是要从bugku上的一道实战题目说起,其实事后才发现,自己在错误的道路上越走越远,故有此文。0x01 官方思路题目地址:http://120.24.86.145:9006一波目录扫描,发现1.zip文件,果断下载解压,是网站源码。其中有包含flag的文件名flag-asd.txt,访问之即得答案。0x02 漏洞搜集事实上大多数人都会从这里开始,首先搜集科威盒子相关漏洞信息,主要有以下两个:S...
2018-04-15 11:35:31
1385
原创 齐博cmsv7.0后台getshell
前言预测下,VG要夺冠。加油0x01 漏洞分析此漏洞比较鸡肋,需要后台权限。漏洞原理很简单,这里就简单分析一下。漏洞出现在:inc/class.inc.php中的GuideFidCache函数里 /*导航条缓存*/ function GuideFidCache($table,$filename="guide_fid.php",$TruePath=0){ global ...
2018-04-05 13:05:06
3121
1
原创 RPO漏洞分析与利用
RPO,全称(Relative Path Overwirte)相对路径覆盖,它主要利用浏览器的一些特性与服务器的配置差异导致的。通俗来说就是浏览器与服务器两者对请求的解析不一致,并没有做到同步解析。因而我们可以通过相对路径来引入其他的资源文件,以至于达到我们的目的。这里以www.xxx.com/test为例。第一步:比如我们输入一个请求http://www.xxx.com/test/%2f..%2...
2018-04-04 08:26:53
2860
原创 然之协同系统漏洞利用汇总
Author:Vspiders首发地址:https://xianzhi.aliyun.com/forum/topic/2135前言前段时间在做然之协同系统代码审计,这里做个简单的总结。第一弹:SQL注入漏洞0x01 注入漏洞分析问题出现在/lib/base/dao/dao.class.php文件中的orderBy函数中,public function orderBy($order){ i...
2018-03-21 17:49:46
4719
2
原创 PHP反序列化漏洞与Webshell
前言最近和小伙伴们一起研究了下PHP反序列化漏洞,突发奇想,利用反序列化漏洞写一个一句话木马效果应该蛮不错的。于是便有此文。0x01 PHP反序列化说起PHP反序列化,那必须先简单说一下PHP的序列化。PHP序列化是将一个对象、数组、字符串等转化为字节流便于传输,比如跨脚本等。而PHP反序列化是将序列化之后的字节流还原成对象、字符、数组等。但是PHP序列化是不会保存对象的方法。<?phpc...
2018-03-21 17:39:27
5091
1
原创 从TCP/IP协议编程看DDos攻击
前言最近在做一些关于TCP/IP协议相关的网络安全编程实验,还是收获了不少心得,这里给大家分享一下。0x01 网络套接字编程网络套接字编程主要是面向应用层做文章,使用封装好的套接字足以完成应用层上的各种功能。这是学习网络编程的必经之路,他也能带领我们快速入门。就拿一个典型的C/S模式的通讯模型来说,从创建套接字、设置套接字参数、绑定套接字到套接字的监听以及最后数据的传输,其中并不需要太多的TCP/...
2018-03-12 14:23:04
1909
转载 TCP/IP报文头部结构整理
IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。 优点:简单,高效。 无状态指:IP通信双方不同步传输数据的状态信息,所有的IP数据报的传输都是独立的。所以容易发生重复和乱序的情况并且IP层不予处理。 然后将这些乱序的交给上层传输层(TCP/UDP等)来处理,将其处理成有序的,正确的。再交给应用层。 不可靠指:IP协议不能保证IP数据报准确到达。所以它提供ICMP...
2018-02-10 20:13:45
347
原创 GNS3 2.X 配置ASA防火墙小计
原来YouTuBe这里厉害,国内是各种也搜不到这样好用的视频了。0x01 安装前往https://www.gns3.com/下载最新版,关于安装一切默认,没什么好说的。0x02 配置Edit-> Preferences -> QEMU ->Qemu VMs增加注意这里选择qemu为2.4.0版本,RAM可以开辟的大一些。这里选择已
2018-01-25 09:48:35
6672
3
原创 C语言编程时遇到的若干问题
还是基础不够扎实,有一些基本的问题都不是很清楚,这里记录一下,以备遗忘。1.关于sizeof与strlen如果变量是数组,那么调用sizeof的结果就是数组的大小,但是如果只是一个指针,那么他只是返回一个sizeof(类型)的值。而strlen是判断字符串的长度,所以一个数组的最后一位是strlen(s)。引用一下:一、sizeof sizeof(...)是运算符,在头文件中typedef为
2018-01-18 11:05:15
908
转载 利用 DNS 隧道传递数据和命令来绕过防火墙
不论你对出站流量采取多么严格的访问控制,你可能都要允许至少对一个服务器的 DNS 请求。对手就可以利用这个防火墙上的“大洞”来偷运数据,并且建立一个非常难以限制的隐蔽命令控制信道。为了学习 DNS 作为命令控制信道的使用方法,我们今天来介绍一个由 Ron Bowes 开发的工具 dnscat2,有了这个工具我们就能轻而易举的实现这种攻击技术。 隧道的部署实施需要一个由攻击者控制的主机来运行 d
2018-01-08 09:45:36
737
转载 隔离网络环境下的数据渗漏:Meterpreter DNS隧道技术
对于渗透测试人员来说,Meterpreter是常用的Metasploit环境远程代理,其中内置的多级攻击载荷(payload)非常方便灵活,对管理控制已拿下的远程沦陷机器极为实用。目前来说,Meterpreter支持TCP端口绑定、TCP / IP反向连接以及HTTP进行反向连接的网络代理传输模式。我们在去年的defcon-russia大会上,启动了一个关于Meterpreter下反向DNS隧道实
2018-01-08 09:44:07
538
原创 Linux C语言中形参传递
我们在编程时经常会遇到这样的情况,需要编写一个函数,需要该函数能够返回传递一个大字符串,如果直接返回该字符串不是不可以,但是这样不是很符合规范,比如我们还需要返回一个Int型来判断是否成功,这里就对C语言中形参的传递进行总结。0x01 int型形参传递整形参数传递很简单,可以直接使用,比如:使用指针:#include int test(int *a){ *a=10; retu
2018-01-05 16:03:16
557
openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin
2017-09-29
wr720nv4 njitclient软件及依赖包
2017-09-25
wr720n v4固件合集-openwrt-uboot-官方原固件
2017-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人