浏览模式: 标准 | 列表 全部文章

Linux下压力测试工具ab

这篇日志被加密了,请输入密码后查看。

PHP模拟手机访问并截取一段程序

这篇日志被加密了,请输入密码后查看。

清除Discuz帖子中被插入非法内容的小程序

朋友的Discuz论坛在2015年7月-10月期间修改论坛帖子,在每个帖子的末尾插入了非法内容(下方第1种),2016年7月14-16日期间修改论坛帖子,在每个帖子的末尾插入了非法内容(下方第2种)。内容从数据库中查询得到如下:

  • [b][url] [img] www.xxxxx.com [/img] [size=6][color=Blue]非法内容介绍[/color][/size] [/url][/b]
  • <meta http-equiv="refresh" content="0; url=http://xxxxx.com">[b][url] [img] www.xxxxx.com [/img] [size=6][color=Red]非法内容介绍[/color][/size] [/url][/b]

第一种内容只是一个红色大字体的链接,需要用户点击,第二种内容更加BT,会直接跳转到目标非法网站。因为帖子是被修改的,所以非常隐蔽,而很多通过搜索引擎进入网站的用户会被一瞬间导入到非法网站……

观察了一下上方2条非法内容中均包含的字符串,就可以在mysql数据库中查询到有多少帖子被修改了:SELECT count(*) FROM  `pre_forum_post` WHERE  `message` LIKE  '%[b][url] [img]%'

因为非法内容这个区域的字符是杂乱无章并且加了一些特殊字符,为了有效清除这些非法信息。我写了个PHP小程序,具体如下:

  • config.php 数据库连接信息配置文件
  • dz_clear_link_cmd.php 通过windows或者linux命令行下执行的
  • dz_clear_link_web.php 通过网页访问形式执行的

本小程序用于清除插入到discuz论坛帖子内容末尾的垃圾信息

本程序基于GBK编码设置,如果你的论坛程序是UTF-8可能会存在问题。

1. 打开config,编辑数据库信息

2. 把3个php文件上传到网站根目录下

3. 访问http://网站地址/dz_clear_link_web.php 输入帖子pid号进行清除

找帖子pid号的方法:

a. 找到有问题帖子,点击“回复”,找到链接中的reppost=1153981,这个1153981就是这个帖子的pid

b. 用phpmyadmin登陆数据库后搜索非法信息,找到帖子pid

如果你使用的是独立主机(windows或者linux系统),在1和2这两步的基础上,在windows命令行下或者linux的终端界面下执行dz_clear_link_cmd.php程序,格式为:

php dz_clear_link_cmd.php 帖子pid号

这样也可以清除帖子中的垃圾信息

dz_clear_link.zip

linux下逐行读取文本内容并处理

#!/bin/sh
 
row=`wc -l < source.txt`
for ((i =1;i <= $row;i=i+1))
do
onerow=`sed -n "$i"p < source.txt`
echo php dz_clear_link.php $onerow>>result.txt
done
 
读取source.txt文件行数,并进入for循环,把source.txt文件的第i行读出,并添加php dz_clear_link.php 在行前,重写到result.txt文件。

discuz论坛程序目录从bbs下调整到根目录的rewrite规则

有个discuz论坛,原本在www.is36.com/bbs目录下,后来程序被移到了www.is36.com根目录下。但是搜索引擎以及网络上其它引用的地址还是www.is36.com/bbs的地址。

情况:Windows 2003企业版、IIS6.0、PHP

修改httpd.conf配置文件,在原本discuz的系统规则最下方加入如下规则:

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^bbs/(.*)$ http://www.is36.com/$1 [L,R=301]

帝国CMS-管理员密码重置插件

适用于帝国CMS6.0以上版本,支持各编码版本。

来源:http://bbs.phome.net/ShowThread/?threadid=197874&forumid=31

因为官方网站下载这个插件需要登录,所以……

把下面代码保存为resetuser.php文件放在/e/update/目录下。

<?php

define('EmpireCMSAdmin','1');

$ecms_config=array();

$do_loginauth='';

require('../class/connect.php');

require('../class/db_sql.php');

require('../class/functions.php');

$link=db_connect();

$empire=new mysqlquery();


//------- 插件参数设置开始 -----


//进入重置页面密码

$pagepassword='123456';


//------- 插件参数设置结束 -----



@header('Content-Type: text/html; charset=gb2312');


//重置密码

function user_ResetUser($add){

global $empire,$dbtbpre;

user_CheckGotoPagePass();

$userid=(int)$add['userid'];

$password=RepPostVar($add['password']);

if(!$userid||!$password||!$add['repassword'])

{

printerror2('请输入重置的新密码','');

}

if($password<>$add['repassword'])

{

printerror2('两次输入的密码不一致','');

}

if(strlen($password)<6)

{

printerror2('密码不能少于6位','');

}

if(function_exists('DoEmpireCMSAdminPassword'))

{

$salt=make_password(8);

$salt2=make_password(20);

$password=DoEmpireCMSAdminPassword($password,$salt,$salt2);

$a="password='$password',salt='$salt',salt2='$salt2'";

}

else

{

$salt=make_password(8);

$password=md5(md5($password).$salt);

$a="password='$password',salt='$salt'";

}

$sql=$empire->query("update {$dbtbpre}enewsuser set ".$a." where userid='$userid'");

if($add['noquestion']==1)

{

$addsql=$empire->query("update {$dbtbpre}enewsuseradd set equestion='0',eanswer='' where userid='$userid'");

}

echo"<script>self.location.href='resetuser.php?ecms=success';</script>";

exit();

}


//返回用户列表

function user_ReturnUserlist(){

global $empire,$dbtbpre;

$users='';

$sql=$empire->query("select userid,username from {$dbtbpre}enewsuser");

while($r=$empire->fetch($sql))

{

$users.="<option value='".$r[userid]."'>".$r[username]."</option>";

}

return $users;

}


//登陆验证

function user_GotoPagePassword($ckpassword){

global $pagepassword;

if($pagepassword<>$ckpassword)

{

printerror2('页面密码错误','');

}

@setcookie('ckecmspagepass',md5($ckpassword));

echo"<script>self.location.href='resetuser.php?ecms=resetpage';</script>";

exit();

}


//验证信息

function user_CheckGotoPagePass(){

global $pagepassword;

if(md5($pagepassword)<>$_COOKIE['ckecmspagepass'])

{

printerror2('您还未验证权限','resetuser.php');

}

}


$ecms=$_POST['ecms'];

if(empty($ecms))

{

$ecms=$_GET['ecms'];

}


if($ecms=='GotoPagePassword')//登陆验证

{

user_GotoPagePassword($_POST['ckpassword']);

}

elseif($ecms=='ResetUser')//重置密码

{

user_ResetUser($_POST);

}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>重置管理员密码</title>

<style>

a { text-decoration: none; color: #002280 }

a:hover { text-decoration: underline }

body { font-size: 10pt; }

table { font-size: 10pt; color: #000000 }

</style>

<script>

function CheckUserInfo(obj){

if(obj.userid.value=='')

{

alert('请选择要重置的用户');

obj.userid.focus();

return false;

}

if(obj.password.value=='')

{

alert('请输入重置的新密码');

obj.password.focus();

return false;

}

if(obj.password.value!=obj.repassword.value)

{

alert('两次输入的密码不一致');

obj.password.focus();

return false;

}

if(obj.password.value.length<6)

{

alert('密码不能少于6位');

obj.password.focus();

return false;

}

return true;

}

</script>

</head>

<body>

<br>

<br>

<br>

<?php

if($ecms=='success')

{

user_CheckGotoPagePass();

?>

<table width="600" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#4FB4DE">

  <tr> 

    <td height="30"><div align="center"><strong><font color="#FFFFFF">已完成重置</font></strong></div></td>

  </tr>

  <tr> 

    <td height="120" bgcolor="#FFFFFF"> 

      <div align="center"><font color="#FF0000"><strong>恭喜!密码重置完毕,现在您可以用新的密码登陆后台了。</strong><br>

        <br>

        <br>

        </font>(友情提示:建议马上删除 /e/update/resetuser.php 文件,防止被重复使用。) </div></td>

  </tr>

</table>

<?php

}

elseif($ecms=='resetpage')

{

user_CheckGotoPagePass();

?>

<form name="reseteform" method="post" action="resetuser.php" onsubmit="return CheckUserInfo(document.reseteform);">

  <table width="500" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#4FB4DE">

    <tr> 

      <td height="30" colspan="2"><strong><font color="#FFFFFF">重置管理员密码:</font></strong></td>

    </tr>

    <tr> 

      <td width="146" height="25" bgcolor="#FFFFFF">用户:</td>

      <td width="339" bgcolor="#FFFFFF"><select name="userid" id="userid">

<?=user_ReturnUserlist()?>

        </select></td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">新密码:</td>

      <td bgcolor="#FFFFFF"><input name="password" type="password" id="password"></td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">重复新密码:</td>

      <td bgcolor="#FFFFFF"><input name="repassword" type="password" id="repassword"></td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">安全问题设为空:</td>

      <td bgcolor="#FFFFFF"><input name="noquestion" type="checkbox" id="noquestion" value="1" checked>

        清空安全问题</td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">当前认证码为:</td>

      <td bgcolor="#FFFFFF"><?=$do_loginauth?$do_loginauth:$ecms_config['esafe']['loginauth']?></td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">&nbsp;</td>

      <td bgcolor="#FFFFFF"><input type="submit" name="Submit" value="马上重置登录信息">

        <input name="ecms" type="hidden" id="ecms" value="ResetUser"></td>

    </tr>

    <tr> 

      <td height="25" colspan="2" bgcolor="#FFFFFF"><font color="#666666">说明:密码设置6位以上,且密码不能包含:$ 

        &amp; * # &lt; &gt; ' &quot; / \ % ; 空格</font></td>

    </tr>

  </table>

</form>

<?php

}

else

{

?>

<form name="loginform" method="post" action="resetuser.php">

  <table width="500" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#4FB4DE">

    <tr> 

      <td height="30" colspan="2"><strong><font color="#FFFFFF">进入重置页面密码:</font></strong></td>

    </tr>

    <tr> 

      <td width="146" height="25" bgcolor="#FFFFFF">输入密码:</td>

      <td width="339" bgcolor="#FFFFFF"><input name="ckpassword" type="password" id="password"></td>

    </tr>

    <tr> 

      <td height="25" bgcolor="#FFFFFF">&nbsp;</td>

      <td bgcolor="#FFFFFF"><input type="submit" name="Submit2" value="进入重置登录页面">

        <input name="ecms" type="hidden" id="ecms" value="GotoPagePassword"></td>

    </tr>

  </table>

</form>

<?php

}

?>

</body>

</html>

<?php

db_close();

$empire=null;

?>

windows下批处理设置IP地址

netsh interface ip set address "本地连接" static 192.168.25.2 255.255.255.0 192.168.25.1
netsh interface ip set dnsservers "本地连接" static 223.5.5.5 primary
netsh interface ip set dnsservers "本地连接" static 114.114.114.114

Linux执行脚本出现/bin/bash^M: bad interpreter:...

在windows系统下用notepad++编辑器编写了一段代码保存为shell.sh,直接上传到了linux系统中,赋予可执行权限:chmod +x shell.sh,然后执行./shell.sh却提示/bin/bash^M: bad interpreter: No such file or directory

造成这个问题的原因是:windows下的编码格式与linux下不同

解决方法,在linux下使用dos2unix工具转码一下即可,centos系统只需要yum -y install dos2unix就可以安装完成,然后用dos2unix shell.sh完成编码转换,然后就可以快乐地执行了!