SMB 远程代码执行漏洞

4月,方程式组织泄露三个文件夹的数据

image.png

其中windows目录下是一些针对windows系统的一些攻击工具和漏洞利用程序。本次“永恒之蓝”攻击程序就是在此文件夹中的一个攻击程序。“永恒之蓝”在此文件夹中的名字叫ETERNALBLUE。

“永恒之蓝”攻击程序利用的是Windows SMB远程提权漏洞,可以攻击开放了445 端口的 Windows 系统并提升至系统权限。

Microsoft 服务器消息块 (SMB) 协议是 Microsoft Windows 中使用的一项 Microsoft 网络文件共享协议。在大部分 windows 系统中都是默认开启的,用于在计算机间共享文件、打印机等。

445端口是一种TCP端口,该端口在windows Server系统中提供局域网中文件或打印机共享服务,攻击者与445端口建立请求连接,能够获得指定局域网内的各种共享信息

解决方案

1、升级针对MS17-010的微软的漏洞补丁,可以采用自动更新或下载更新补丁的方法,补丁更新地址如下:

Windows Vista、Windows Server 2008

http://www.catalog.update.microsoft.com/search.aspx?q=4012598

Windows 7、Windows Server 2008 R2

http://www.catalog.update.microsoft.com/search.aspx?q=4012212

Windows 8.1、Windows Server 2012 R2

http://www.catalog.update.microsoft.com/search.aspx?q=4012213

Windows RT 8.1

http://www.catalog.update.microsoft.com/search.aspx?q=4012216

Windows Server 2012

http://www.catalog.update.microsoft.com/search.aspx?q=4012214

2、针对微软不提供补丁支持的操作系统,Windows XP和Windows 2003,可以禁止使用smb服务的445端口,禁用方法:

https://jingyan.baidu.com/article/d621e8da0abd192865913f1f.html

3、深信服防火墙早在一个月前就已发布针对微软SMB漏洞的攻击防护,用户可升级到20170415及其以上版本即可防御此漏洞的攻击。

4、深信服智安全倾情奉献实用解决方案,参考链接:http://sec.sangfor.com.cn/events/89.html

帝国CMS统一修改已添加内容页存放目录修改成自定义的方法

今天电脑技术吧为大家带来一篇文章:“帝国CMS统一修改已添加内容页存放目录修改成自定义的方法”,

原始的地址截图:有个日期目录,要把这个日期目录“干掉”帝国CMS统一修改已添加内容页存放目录修改成自定义的方法

后台设置栏目:

blob.png

设置完毕以后,在后台–系统设置–数据更新–更新信息页地址  重新生成一次信息页地址。这样就可以了!如下图

blob.png

不过你会发现 新加入的信息,地址已经变成“目录/ID编号.html”这个方式了!但是从前添加的信息还是“目录/年月日/ID编号.html”这个方式!那么请看下面的教程:

使用帝国CMS按默认设置建立目录后,突然意识到“目录/年月日/ID编号.html”的生成方式不如“目录/ID编号.html”生成方式。此方式对搜索引擎更友好。

于是立即行动,修改后却发现新更新的内容将采用此种方式,却发现修改生成方式之前的文件还是固执地按照以前方式生成。

仔细研究了下帝国数据库表结构,发现newspath字段记录的是文件路径,这样在数据库里把这个字段清空就行了!

解决办法(建议一条条执行):

update 表名  set newspath=”;

如何执行?从哪里执行?请看下图

blob.png

实例使用(新闻、文章):

update phome_ecms_news set newspath=”;

update phome_ecms_article set newspath=”;

如何知道表名:请看下图(红色框内就是表名,栏目里使用了哪个表就执行哪个表就行了)

161253bdmezmd8a44g5aet.png

操作完成以后,已添加内容页的地址 就变成目录/ID编号.html”这个方式了!(记得 在后台–系统设置–数据更新–更新信息页地址 ,然后数据更新里更新首页 栏目页 内容页)

做完后的地址形式截图:

帝国CMS统一修改已添加内容页存放目录修改成自定义的方法

http://www.zhishiwu.com/zhanzhang/rumen/32770.html

php 将远程二维码 画到海报上面

public function createimg($logo,$filename,$QR=”images/code.jpg”)
{
header(“Content-type: image/jpg”);
// $QR=”images/code.jpg”;
if ($logo !== FALSE) {
$QR = imagecreatefromstring(file_get_contents($QR));

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $logo);
curl_setopt($ch, CURLOPT_REFERER, $logo);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
$logo = imagecreatefromstring($result);
$QR_width = imagesx($QR);//二维码图片宽度
$QR_height = imagesy($QR);//二维码图片高度
$logo_width = imagesx($logo);//logo图片宽度
$logo_height = imagesy($logo);//logo图片高度
$logo_qr_width = $QR_width / 5;
$scale = $logo_width/$logo_qr_width;
$logo_qr_height = $logo_height/$scale;
$from_width = ($QR_width – $logo_qr_width) / 2;
imagecopyresampled($QR, $logo, 250, 920, 0, 0, 300, 300, $logo_width, $logo_height);
}
imagejpeg($QR,$filename,50);

}

js 定时弹出qq客服

var qq_chat = true;

function PlayJsAdPopWin() {

if (qq_chat) {

popwin = window.location.href = ‘tencent://message/?uin=200988027&Site=在线咨询&Menu=yes’

}

};

setTimeout(“PlayJsAdPopWin()”, 15000);

烟花 canvas html html5

<html><head>
<meta charset=”UTF-8″>
<title>canvas basic – firework – happy new year!</title>
<style>
*{margin: 0px;padding: 0px;}
canvas {display: block;}
</style>
</head>

<body>
<canvas id=”canvas” width=”1920″ height=”933″></canvas>
<script src=”http://www.100sucai.com/js/jquery.js”></script>

<script src=”js/index.js”>
$(function() {
var canvas = $(‘#canvas’)[0];
canvas.width = $(window).width();
canvas.height = $(window).height();
var ctx = canvas.getContext(‘2d’);

// init
ctx.fillStyle = ‘#000’;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// objects
var listFire = [];
var listFirework = [];
var fireNumber = 10;
var center = { x: canvas.width / 2, y: canvas.height / 2 };
var range = 100;
for (var i = 0; i < fireNumber; i++) {
var fire = {
x: Math.random() * range / 2 – range / 4 + center.x,
y: Math.random() * range * 2 + canvas.height,
size: Math.random() + 0.5,
fill: ‘#fd1’,
vx: Math.random() – 0.5,
vy: -(Math.random() + 4),
ax: Math.random() * 0.02 – 0.01,
far: Math.random() * range + (center.y – range)
};
fire.base = {
x: fire.x,
y: fire.y,
vx: fire.vx
};
//
listFire.push(fire);
}

function randColor() {
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
var color = ‘rgb($r, $g, $b)’;
color = color.replace(‘$r’, r);
color = color.replace(‘$g’, g);
color = color.replace(‘$b’, b);
return color;
}

(function loop() {
requestAnimationFrame(loop);
update();
draw();
})();

function update() {
for (var i = 0; i < listFire.length; i++) {
var fire = listFire[i];
//
if (fire.y <= fire.far) {
// case add firework
var color = randColor();
for (var i = 0; i < fireNumber * 5; i++) {
var firework = {
x: fire.x,
y: fire.y,
size: Math.random() + 1.5,
fill: color,
vx: Math.random() * 5 – 2.5,
vy: Math.random() * -5 + 1.5,
ay: 0.05,
alpha: 1,
life: Math.round(Math.random() * range / 2) + range / 2
};
firework.base = {
life: firework.life,
size: firework.size
};
listFirework.push(firework);
}
// reset
fire.y = fire.base.y;
fire.x = fire.base.x;
fire.vx = fire.base.vx;
fire.ax = Math.random() * 0.02 – 0.01;
}
//
fire.x += fire.vx;
fire.y += fire.vy;
fire.vx += fire.ax;
}

for (var i = listFirework.length – 1; i >= 0; i–) {
var firework = listFirework[i];
if (firework) {
firework.x += firework.vx;
firework.y += firework.vy;
firework.vy += firework.ay;
firework.alpha = firework.life / firework.base.life;
firework.size = firework.alpha * firework.base.size;
firework.alpha = firework.alpha > 0.6 ? 1 : firework.alpha;
//
firework.life–;
if (firework.life <= 0) {
listFirework.splice(i, 1);
}
}
}
}

function draw() {
// clear
ctx.globalCompositeOperation = ‘source-over’;
ctx.globalAlpha = 0.18;
ctx.fillStyle = ‘#000’;
ctx.fillRect(0, 0, canvas.width, canvas.height);

// re-draw
ctx.globalCompositeOperation = ‘screen’;
ctx.globalAlpha = 1;
for (var i = 0; i < listFire.length; i++) {
var fire = listFire[i];
ctx.beginPath();
ctx.arc(fire.x, fire.y, fire.size, 0, Math.PI * 2);
ctx.closePath();
ctx.fillStyle = fire.fill;
ctx.fill();
}

for (var i = 0; i < listFirework.length; i++) {
var firework = listFirework[i];
ctx.globalAlpha = firework.alpha;
ctx.beginPath();
ctx.arc(firework.x, firework.y, firework.size, 0, Math.PI * 2);
ctx.closePath();
ctx.fillStyle = firework.fill;
ctx.fill();
}
}
})
</script>

</body></html>

php 操作 redis 之 string 字符串类型

<?php
//第一步:实例化redis对象
$redis = new redis();
//第二步:php客户端设置的ip及端口
$redis->connect(“127.0.0.1″,”6379”);
//第三部:配置连接密码 检测redis服务器连接状态

//连接失败直接结束 并输出
$auth = $redis->auth(‘zhenai’) or die(“redis 服务器连接失败”);
// var_dump($auth);连接成功 返回 true 反之 返回false
//第四步 可用可不用
// echo $connect_status=$redis->ping();
// if($connect_status===”+PONG”)
// {
// echo “redis 服务器连接成功”;
// }
//就是如此简单
//var_dump($connect_status);
/*
第一部分
字符串(String)
一个键最多存储512MB
1》SET:设置key对应的值为value

语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds:设置键的key的过期时间SET key value EX seconds — SETEX
PX milliseconds:以毫秒的形式设置过期时间SET key value PX milliseconds–PSETEX
NX:只有键不存在的时候才可以设置成功SET key value NX–SETNX
XX:只有key已经存在的时候才可以设置
*/
//1.存储一个值(set) 获取一个值(get)
$redis->set(“goonls”,”com”);
$goonls=$redis->get(“goonls”);
// echo $goonls;

//2.存储多个值(mset) 获取多个值(mget 或 getMultiple)
$array = array(
‘first_key’=>’first_val’,
‘second_key’=>’second_val’,
‘third_key’=>’third_val’);
$array_get = array(‘first_key’,’second_key’,’third_key’);
$redis->mset($array);
$goonls_array=$redis->mget($array_get);
// print_r($goonls_array);
/*打印结果 */
// Array
// (
// [0] => first_val
// [1] => second_val
// [2] => third_val
// )

//3.取一个不存在的值 返回false
$non_existent_string=$redis->get(“goonls.com”);
// var_dump($non_existent_string);
//返回false

//4.设置一个已经存在的值 会覆盖原来的值
$redis->set(“goonls”,”goonls.com”);
$set_existent_string=$redis->get(‘goonls’);
//echo $set_existent_string;
//覆盖原来“com”值 为 “goonls.com”
//5.删除 delete
// 描述:删除指定的键
// 参数:一个键,或不确定数目的参数,每一个关键的数组:key1 key2 key3 … keyN
// 返回值:删除的项数
$redis->delete(“goonls”);
$set_existent_string=$redis->get(‘goonls’);
//var_dump($set_existent_string);
//结果:bool(false)
// 6,setnx
// 描述:如果在数据库中不存在该键,设置关键值参数
// 参数:key value
// 返回值:BOOL 成功返回:TRUE;失败返回:FALSE

$set_string=$redis->set(“goonls.com”,’11111′);
//上面已经设置 goonls.com 的 值
// 下面重复设置将返回false
$setnx_string=$redis->setnx(“goonls.com”,’22222′);
//var_dump($setnx_string);//false
// 7,exists

// 描述:验证指定的键是否存在
// 参数key
// 返回值:Bool 成功返回:TRUE;失败返回:FALSE

$set_string=$redis->set(“goonls.com7”,’11111′);
//var_dump($redis->exists(‘goonls.com7′)); //结果:bool(true)

//8.GETSET

// 描述:先获取值 然后设置值
// 参数key value
// 返回值:Bool 成功返回:value;失败返回:FALSE

$set_string=$redis->set(“goonls.com8”,’GETSET’);

$goonls_com8=$redis->getset(‘goonls.com8′,’GETSET26’);
//var_dump($goonls_com8); //返回 GETSET
//echo $redis->get(‘goonls.com8’);
//9.incr

// 描述:数字递增存储键值键.
// 参数:key value:将被添加到键的值
// 返回值:INT the new value
// 实例:

if(!$redis->exists(‘goonls.com9’))
{
$redis->set(‘goonls.com9’,1);
}
else
{
$redis->incr(‘goonls.com9’);
}
echo $redis->get(‘goonls.com9’);

// 10,exists

// 描述:验证指定的键是否存在
// 参数key
// 返回值:Bool 成功返回:TRUE;失败返回:FALSE
// 范例:

// 复制代码 代码如下:

$redis->set(‘test’,’1111111111111′);
var_dump($redis->exists(‘test’)); //结果:bool(true)

?>

php实现图片点击直接下载


public function download(){
$path=SITE_PATH.'data/upload/'.I("path");
// if(is_file($path))
// {
// echo "是";
// }
// else
// {
// echo "fou ";
// }

// print_r(basename($path));
// exit;
// echo dirname(__FILE__) ;
header("Content-type:octet/stream");

Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
header("Content-Length".filesize($path));
header("Content-disposition:attachment;filename=".basename($path).";");

echo readfile($path);
exit;
}

php实现图片点击直接下载 点击下载,下载图片

在制作网页的时候,经常会出现需要添加“下载”按钮,对于那些下载各类压缩包格式的文件来说,浏览器会直接下载;

浏览器能识别的格式会直接打开,不能识别的格式会采用下载的形式进行。

比如PDF和jpg,png图片等格式的文件,设置<a>标签href属性会将文件在页面中直接打开。如果href链接的是zip,rar等不能识别的格式,则会采用下载的形式。

如果想要实现,点击下载,图片不在页面中打开,而是下载的形式讲图片保存到本地,可以采用php的特性来做。(当然也可以是点击下载图片,图片在单独的页面中出现,然后再右键保存。这是方式用户体验不好,有些用户可能不知道该怎样把图片保存下来。)

方法一:

1.先建立一个单独的php文件:

1
2
3
4
5
6
7
8
<?php
    $file=$_GET['file'];
    header("Content-type:octet/stream");
    header("Content-disposition:attachment;filename=".$file.";");  
    header("Content-Length".filesize($file));
    readfile($file);
    exit;      
?>

2.在index.php文件里面插入一行代码:

$tpl->assign(“filenames”,$fileimages);

3.写好上面之后,在需要设置下载图片的<a>标签中直接调用即可。

调用方法:<a href=”www.abc.com/b.php?file=images/01.jpg”></a>

注:前面两步写好之后,不管是该域中那个页面调用都可以调用,只要“file=”后面的图片路径写对了就可以调用;

限制:这种方法对页面框架有限制,如果不是用php嵌套的框架,不方便使用这种方法。

移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程

最近逍遥乐在寻找手机网页调用系统短信发送短信的功能,用于分享和发送信息。找了一圈,找到了,这里分享出来,记录一下!

如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法。

采用url href链接的方式,实现在Safari  ios,Android 浏览器,webos浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能。

 1. 拨打电话

在电话号码前面可以加上 + (加号)表示国际号码。如:

最常用WEB页面JS实现一键拨号的电话拨打功能

例子:

<a href="tel:10086">10086</a>

使用wtai协议进行拨打电话

 <a href="wtai://wp/mc;10086">10086</a>

2. 发送短信

如果是需要调用短信的接口,可以将链接写成下面的格式:

sms:<phone_number>[,<phone-number>]*[?body=<message_body>]

例如:

1)给 10086 发短信:
<a href="sms:10086">发送信息</a>
(2)给 10086 发送内容为"cxye"的短信:
<a href="sms:10086?body=cxye">发送信息</a>
(3)给 10086 和 10010 发送内容为"cxye"的短信:
<a href="sms:10086,10010?body=cxye">发送信息</a>

 

3. Mail 发送邮件

就和普通的html一样使用mailto

(1)给test1@163.com发送邮件:

<a href="mailto:test1@163.com">mail</a>

(2)给test1@163.com和test2@126.com发送邮件:
<a href="mailto:test1@163.com,test2@126.com">mail</a>
2)给test1@163.com发送主题为“testing”的邮件:
<a href="mailto:test1@163.com?subject=Testing">mail</a>
2)给test1@163.com发送主题为“testing”的邮件,并抄送给test3@126.com
<a href="mailto:test1@163.com?subject=Testing mailto&cc=test3@126.com">mail</a>

 

4. Android Market

如果希望一个链接能够激活Android市场的功能,可以把链接写成:

 <a href="market://search?q=[query]">Android Market link</a>

其中<query>就是搜索的内容,你应用的名称

例子:

<a href="market://search?q=MyApp">MyApp</a>

5. GPS地图定位

<a href="geopoint:[经度],[纬度]">我的位置</a>

例如:

<a href="geopoint:108.954823,34.275891">我的位置</a>