小编Jas*_*rer的帖子

Perl CGI入侵了吗?但我做的一切都是正确的

我刚刚在我的一个web目录中发现了一些奇怪的PHP文件.他们原来是垃圾邮件发送者利用文件.

他们自2006年以来一直在那里,大概是我使用我的CGI剧本进行高调的捐赠活动.并且文件放在脚本的可写目录中,因此我怀疑我的脚本可能已被某种方式利用.

但是我正在使用Perl"污点检查",严格等等,而且我永远不会将查询数据传递给shell(它永远不会调用shell!)或使用查询数据为OPEN生成文件路径...我只我在脚本中直接指定的OPEN文件.我确实将查询数据INTO写入文件作为文件内容传递,但据我所知,这并不危险.

我盯着这些脚本看不到任何东西,我研究了所有标准的Perl CGI漏洞.当然,他们可能以某种方式获得了我的托管帐户的密码,但事实上这些脚本放在我的CGI脚本的数据目录中让我怀疑脚本.(此外,他们"以某种方式"获取我的密码是一个更可怕的解释.)此外,在那段时间,我的日志显示许多"警告,从非PayPal地址收到的IPN"消息,这些IP来自俄罗斯.因此,似乎有人至少在尝试破解这些脚本.

涉及两个脚本,我将它们粘贴在下面.任何人都可以看到任何可能被利用来编写意外文件的东西?

这是第一个脚本(用于接收PayPal IPN并跟踪捐赠,还跟踪哪个网站产生的捐款最多):

#!/usr/bin/perl -wT


# Created by Jason Rohrer, December 2005
# Copied basic structure and PayPal protocol code from DonationTracker v0.1


# Script settings



# Basic settings

# email address this script is tracking payments for
my $receiverEmail = "receiver\@yahoo.com"; 

# This script must have write permissions to BOTH of its DataDirectories.
# It must be able to create files in these directories.
# On most web servers, this means the directory must …
Run Code Online (Sandbox Code Playgroud)

perl cgi exploit

21
推荐指数
1
解决办法
3403
查看次数

MySQL非常偶然无法保存结果集

这是一个生产PHP/MySQL系统,已经运行了几个月,大多没有问题.

很偶然,就像每隔几周一次,我从MySQL查询中看到"无法保存结果集"错误.

我知道这可能是由一个大的结果集引起的,但事实并非如此.在最近的例子中,它发生在通常不超过10行的小表中(行表示活动游戏,并且在游戏结束后它们被移除 - 大量转换,但总是很小).

查询非常简单:

SELECT player_1_id, player_2_id FROM minuetServer_games 
WHERE  ( player_1_id = '1513399' OR player_2_id = '1513399' )  
AND last_action_time < SUBTIME( CURRENT_TIMESTAMP, '0 0:01:22.000' ) 
FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)

这个查询的目的是为给定的user_id(它们可以是p1或p2)找到任何不太陈旧的活动游戏.如果存在,我在下一个查询中更新了他们游戏的last_action_time(当然,当未保存结果集时,不会发生更新).

我运行了CHECK TABLE,结果还可以.

虚假,偶尔"无法保存结果集"警告的原因是什么?有办法解决吗?有一个坚实的解决方案吗?

编辑:

一位评论者要求提供有关他PHP配置的更多信息.这是phpinfo()输出的直接链接:

http://cordialminuet.com/info.php

EDIT2:

这是创建查询的代码:

global $tableNamePrefix;
cm_queryDatabase( "SET AUTOCOMMIT=0" );

global $moveTimeLimit;

$query = "SELECT player_1_id, player_2_id ".
    "FROM $tableNamePrefix"."games ".
    "WHERE ( player_1_id = '$user_id' OR player_2_id = '$user_id' ) ".
    " AND last_action_time < ".
    " SUBTIME( CURRENT_TIMESTAMP, '$moveTimeLimit' ) FOR UPDATE;"; …
Run Code Online (Sandbox Code Playgroud)

php mysql

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

标签 统计

cgi ×1

exploit ×1

mysql ×1

perl ×1

php ×1