标签: code-injection

使用LD_PRELOAD方法注入printf时出现问题

我在我的一个项目中破解了 glibc 的 printf() 并遇到了一些问题。您能提供一些线索吗?我关心的问题之一是为什么同样的 malloc/free 解决方案可以完美地工作!

\n\n

如附件所示,\xe2\x80\x9cPrintfHank.c\xe2\x80\x9d 包含我自己的 printf() 解决方案,它将在标准库之前预加载;而 \xe2\x80\x9cmain.c\xe2\x80\x9d 只是使用 printf() 输出一个句子。编辑两个文件后,我发出以下命令:

\n\n
    \n
  1. 编译 main.c\n gcc \xe2\x80\x93Wall \xe2\x80\x93o main main.c
  2. \n
  3. 创建我自己的库\n gcc \xe2\x80\x93Wall \xe2\x80\x93fPIC \xe2\x80\x93shared \xe2\x80\x93o PrintfHank.so PrintfHank.c \xe2\x80\x93ldl
  4. \n
  5. 测试新库\n LD_PRELOAD=\xe2\x80\x9d$mypath/PrintfHank.so\xe2\x80\x9d $mypath/main
  6. \n
\n\n

但我在控制台中的 printf\xe2\x80\x9d 中收到了 \xe2\x80\x9chello world\xe2\x80\x9d 而不是 \xe2\x80\x9c 。当破解 malloc/free 函数时,\xe2\x80\x99s 没问题。

\n\n

我以 \xe2\x80\x9croot\xe2\x80\x9d 身份登录系统,并使用 2.6.23.1-42.fc8-i686。任何意见将不胜感激!

\n\n

主程序

\n\n
#include <stdio.h>\n\nint main(void)\n{\n    printf("hello world\\n");\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

PrintfHank.c

\n\n
#ifndef _GNU_SOURCE\n#define _GNU_SOURCE\n#endif\n\n#include <stdio.h>\n#include <dlfcn.h>\n\nstatic int (*orig_printf)(const char *format, ...) …
Run Code Online (Sandbox Code Playgroud)

hook glibc code-injection

3
推荐指数
1
解决办法
4833
查看次数

有没有办法在构建时注入代码?

我想将以下行注入到我的应用程序的每个方法的顶部

Trace.WriteLine(this.GetType().Name + "." + "Name of Method");
Run Code Online (Sandbox Code Playgroud)

我想在编译时或构建时或构建后进行 - 基本上是在它进入客户手中之前。

这可能吗?

.net c# aop code-injection

3
推荐指数
1
解决办法
536
查看次数

使用注入的 DLL 代码干扰 Win32 消息循环 (SetWindowsHookEx)

大家好!

经过几个小时的深入谷歌,我终于到了这里。我将直接切入正题:我将要“刷新”我的 C/C++ 技能并再次获得非托管世界的经验。作为一项“基本”任务,我开发了一个小键盘记录器(仅包含 Windows API 的几行代码),但现在我想使用“隐身”功能对其进行扩展。因此,我将代码放入 Win32 DLL 中,您可以在此处找到它的内容。您会注意到,其中有一个非常有问题的部分:

  MSG msg;
 BOOL bRet;

 while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
 { 
  if (bRet == -1)
  {
   return FALSE;
  }
  else
  {
   TranslateMessage(&msg); 
   DispatchMessage(&msg); 
  }
 }
Run Code Online (Sandbox Code Playgroud)

是的,这是一个普通的消息循环 - 在我的情况下会引起麻烦。我将此 DLL 注入到“受害者”可执行文件(例如 VLC 媒体播放器)中以欺骗 AV/应用程序防火墙,到目前为止它可以正常工作,注入本身完美无缺。现在是大的但是:当然,无尽的 while 循环现在冻结了整个目标应用程序(没有它,我的钩子回调永远不会被执行)这并不是真正的计划......在潜入 MSDN 库的一半并尝试了谷歌给了我很多“解决方案”;我放弃。

甚至有可能评估“受害者”进程的消息循环而不阻塞它自己的业务但提供我的键盘钩子回调来工作?

真诚的,奈法留斯

c c++ dll winapi code-injection

3
推荐指数
1
解决办法
2739
查看次数

guice:命令行的运行时注入/绑定

我有以下问题:

   @Inject
   MyClass(Service service) {
      this.service = service;
   }

   public void doSomething() {
      service.invokeSelf(); 
   }
Run Code Online (Sandbox Code Playgroud)

我有一个模块

bind(service).annotatedWith(Names.named("serviceA").to(ServiceAImpl.class);
bind(service).annotatedWith(Names.named("serviceB").to(ServiceBImpl.class);
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我想让用户通过命令行参数动态选择运行时基础上的注入.

public static void Main(String args[]) {
   String option = args[0];
   ..... 
}
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?我是否必须创建多个模块才能执行此操作?

java binding command-line guice code-injection

3
推荐指数
1
解决办法
3400
查看次数

如何为多人游戏作弊(例如:Tibia)从客户端访问信息(在本例中为C++)?

Tibia是一款在线多人游戏,通过C++客户端(图像)工作.有一些作弊工具允许,例如,更改你的字符的外观,当你的HP达到某一点时使用恢复项目甚至描绘没有美学的图像(图像).

这些软件如何访问Tibia使用的内部存储器,以及它们如何确定存储特定信息的位置?

c++ memory automation code-injection

3
推荐指数
1
解决办法
1598
查看次数

在构造函数上注入 java.util.Random

我有一个带有此构造函数的 HiddenNumber 类:

\n\n
public HiddenNumber(java.util.Random random, int maxNumberOfDigits) {\n  /* some code */\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

I\xc2\xb4m 尝试使用 DI 注释:

\n\n
@Autowired\npublic HiddenNumber(@Value("T(java.util.Random") random, \n    @Value("4")int maxNumberOfDigits) {\n  /* some code */\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这不起作用。我也尝试过:

\n\n
@Autowired\npublic HiddenNumber(@Value("#{T(java.util.Random}") random, \n    @Value("4")int maxNumberOfDigits) {\n  /* some code */\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我做:

\n\n
@Autowired\npublic HiddenNumber(Random random, @Value("4") int maxNumberOfDigits) {\n  /* some code */\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

并在 app-context.xml 中执行以下操作:

\n\n
<bean class="java.util.Random" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

工作正常。但当然我更喜欢只做注释。

\n\n

注入 java.util.Random 的正确方法是什么?

\n\n

谢谢。

\n

java spring code-injection

3
推荐指数
1
解决办法
3710
查看次数

使用@Value注释注入日期

这就是我试图将一个日期注入@Component类的方法.

@Value("${new java.text.SimpleDateFormat(\"yyyyMMdd\").parse(\"${PROP_DATE}\")}")
Date myDate;
Run Code Online (Sandbox Code Playgroud)

日期在属性文件中指定为String:

PROP_DATE=20110421
Run Code Online (Sandbox Code Playgroud)

我收到这个错误.我究竟做错了什么?有没有其他方法来注入Date属性?谢谢.

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ccc': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: java.util.Date aaa.bbb.ccc.myDate; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'new java.text.SimpleDateFormat("yyyyMMdd").parse("20110421")'
Run Code Online (Sandbox Code Playgroud)

spring annotations date code-injection

3
推荐指数
1
解决办法
5989
查看次数

通过.htaccess停止SQL注入

我们一直是一些令人讨厌的 SQL 注入攻击的目标 - 所有攻击都攻击同一页面,并使用大致相同的注入参数。他们实际上没有取得任何进展,但是当他们访问同一页面时,它会占用服务器资源并减慢一切速度。

我尝试过使用通用的 SQL 注入代码块(如此处找到的代码块),但并非 100% 实际有效。

我截取了他们所访问的 URL 的片段,如下所示:

b%27%20and%20if%28Length%28%28database%28%29%29%29%3C24%2CBENCHMARK%281206122%2CMD5%280x41%29%29%2C0%29%20and%20%27x%27%3D%27x
Run Code Online (Sandbox Code Playgroud)

我只是想将它们发送到错误页面或其他内容,但不太确定如何实现我想要的内容。

任何和所有的帮助表示赞赏。

顺便说一句,他们访问的不是 WordPress 目录,因此 Wordpress 安全插件没有用处。

干杯,BH-Tech

我还要补充一点,注入参数不在查询字符串中。请求类似于以下内容:

/directory/hospitals/http://www.domain%27%20and%20if%28Length%28%28select%20distinct%20table_name%20from%20%60information_schema%60.tables%20where%20table_schema%3D%27mysql%27%20limit%200%2C1%29%29%3D13%2CBENCHMARK%281925550%2CMD5%280x41%29%29%2C0%29%20and%20%27x%27%3D%27x.com/directory/hospitals/
Run Code Online (Sandbox Code Playgroud)

sql .htaccess code-injection

3
推荐指数
1
解决办法
1万
查看次数

javascript 注入没有按应有的方式工作

我将外部文件作为 src 注入脚本标签,然后调用回调函数来注入 HTML。但当我调试时,它是这样的:

  1. 注入jquery.
  2. 注入HTML(回调函数)
  3. 注入其余的脚本标签。

有人可以向我解释如何解决这个问题吗?它的工作原理如下:

  1. 注入所有脚本。
  2. 注入 HTML。

Injection.js 文件:

injectJavaScripts([
    "lib/jquery/dist/jquery.js",
    "lib/angular/angular.js",
    "lib/angular-route/angular-route.js",
    "lib/ui-router/release/angular-ui-router.js",
    "src/app.js",
    "src/LoginController.js",
    "src/LogoutController.js",
    "src/MainController.js"
], function() {
    injectHTML();
});

function injectJavaScripts(urls, callback) {
    var elements = [];
    urls.forEach(function (url) {
        var s = document.createElement('script');
        s.src = chrome.extension.getURL(url);
        elements.push(s);
    });

    var target = document.body || document.documentElement;
    var i = 0;
    var patchNext = function () {
        if (i >= elements.length) return;
        else if (i > 0) {
            elements[i - 1].onload = null;
        } …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery code-injection

3
推荐指数
1
解决办法
1574
查看次数

angerlySetInnerHTML 的替代方案

我使用 React 构建一个存储文档的 Web 应用程序。它们以 HTML 格式创建,然后存储在数据库中。为了在应用程序中显示它们,我div使用dangerouslySetInnerHTML.

<div dangerouslySetInnerHTML={{__html: this.props.page.content}} />
Run Code Online (Sandbox Code Playgroud)

即使这个工作得很好,这个名字也dangerouslySetInnerHTML表明要更多地关注这种情况,但我想知道到底可以做些什么来保持足够的灵活性来加载 HTML 并使其出现在 Web 应用程序中。我相信危险这个词解决了跨站点脚本的危险,这意味着脚本可能被注入,执行有害代码。

作为一种对策,我想到在将 HTML 代码解析为div. 解决这个问题的一个库是DOMPurify另一种方法是使用html-react-parser将 HTML 代码从数据库直接转换为 React Elements 。

这是正确的方法吗?或者有替代方案dangerouslySetInnerHTML吗?

html code-injection jsx reactjs tsx

3
推荐指数
1
解决办法
7483
查看次数

标签 统计

code-injection ×10

c++ ×2

html ×2

java ×2

spring ×2

.htaccess ×1

.net ×1

annotations ×1

aop ×1

automation ×1

binding ×1

c ×1

c# ×1

command-line ×1

date ×1

dll ×1

glibc ×1

guice ×1

hook ×1

javascript ×1

jquery ×1

jsx ×1

memory ×1

reactjs ×1

sql ×1

tsx ×1

winapi ×1