某一次排查源码后门的过程
源码藏后门这种事情,屡见不鲜了。文件包含,文件调用,拼接,大小马,htaccess文件做手脚等等………不过今天我就遇到个奇葩,藏了后门还不承认,非说是程序自带的。给大家看看程序结构先。
我检查了我所知道的一切后门方式。也用扫描器查找了一般,以为安全了直接上服务器部署好了,域名解析开始使用。第二天,莫名其妙登录日志有其他人了。也没太在意,觉得应该是自己登录路径和密码设的不够复杂,被人试出来了。改了一下就没管他了,因为工作原因过了两三天才有空去看看网站。一打开我惊了,登录日志一大堆不说,数据库也被人操作过……还有几个马儿躺在图片文件夹里面
这是我下载下来源码保留的马
后来看日志,最开始是一个UPLOAD.PHP上传过来的。并且这文件目录很深,打开代码如下
限制了大小写,加空格,加字符串,黑名单。他是怎么传上去的?看到strrchr函数后,突然发现我是win服务器,windows系统自动去掉不符合规则符号后面的内容。
这个时候我们就可以利用.来绕过限制了,因为strrchr函数会将上传的文件名后缀处理为.php.,当上传到win机器上时又会将后面的.去掉,然后后缀就又会被还原成.php,这样就可以执行了,下面演示一下
首先上传1.php文件并抓包,在burp修改文件后缀名为.php.
成功,那么问题来了他是怎么获得我的域名的?
在public文件夹里面有个index.php。包含了一大堆文件
其中printer.php里有SERVER_NAME函数和
file_get_contents函数。懂得人应该都懂了我就不教大家了。也欢迎大佬们讨论一下在自己程序植入后门算什么罪?我觉得算非法控制计算机罪。对于这种人,我们也奈何不了他。哑巴吃黄连,有苦说不出啊!
WordPress建站教程:上传图片重命名,避免中文名影响SEO优化
作者:悦然wordpress建站(悦然建站)
(此处已添加小程序,请到今日头条客户端查看)
继续给大家分享wordpress建站教程。今天给大家分享一个wordpress建站和日常优化的一个小细节,关于图片名称的。
默认情况下wordpress上传的图片名称和本地的图片名称是一样的,即本地是什么上传之后就是什么,与外国人不一样,我们都会习惯性的使用中文名称给图片命名,如果上传之后的图片也是中文名的话,图片链接中也就有了中文名,而链接中有中文是不太利于搜索引擎抓取,可能会影响网站SEO优化效果。
悦然企业网站建设之前做的一个网站也遇到了同样的问题,一般的网站配图我都是直接截图,而默认的截图名称也有中文,如上图所示,这样感觉确实不太好,甚至有些这些图片的中文名称还可能泄露一些隐私信息。
因此我们非常有必要重新命名上传的图片,但手动修改肯定不行,效率太低。接下来悦然企业网站建设给大家分享几个自助给图片重命名的方法。
可以实现图片重命名的插件有很多,这里给大家推荐两个。
1.Unique Rename Image File Upload(推荐)
这款插件使用非常简单,直接安装启用,然后上传图片系统就会自动重命名了。这款插件可以直接在wordpress插件中心下载,也可以通过下面的链接下载。
下载地址
https://downloads.wordpress.org/plugin/unique-rename-image-file-upload.zip
2.Enable Media Replace
Enable Media Replace是一个图片替换的插件,但是它包括了图片重命名功能。如果你的网站已经存在了大量的中文名称图片,那就可以安装这款插件来批量替换。
下载地址
https://downloads.wordpress.org//enable-media-replace.3.5.0.zip
使用方法:进入插件设置,如上图所示选第二项即可。
如果你不想安装插件,那么可以使用下面的这段代码来实现。
把上面的代码添加到当前wordpress企业网站模板的functions.php文件中保存,以后上传图片时系统就会自动以数字来从命名了。
也有一些wordpress企业网站模板自带了图片重命名功能,比如悦然企业网站建设的提供的建站模板都有这个功能,可以直接在后台打开功能开头即可,图片上传后会自动以数字日期时间重命名。
图片重命名也算是一种图片SEO优化,做了肯定比没做好,以上几种方法使用哪种都可以,效果都是一样的。如果你的模板自带了重命名功能那就直接使用自带功能,如果你想简单省事,那就使用插件,如果你害怕插件影响网站速度和性能,那就使用代码。
php手把手教你做网站(三十)上传图片生成缩略图
三种方法:按比例缩小、图片裁切、预览图片裁切
- 不管使用哪一个都是建立在图片已经上传的基础上;
- 预览裁切上传,如果预览的图片就是原始大小,可以预览裁切以后上传(这里是个假象,下边会说明);
1、上传以后按比例缩小
由于上传的图片宽度、高度比例和前台限制的不一定是一样的,这就可能出现前台div内无法铺满或者宽度高度有超出的情况,下面是代码:
缩小方法imageZoom:
imageZoom方法执行缩小
说明:
- $sourceX, $sourceY是指截图的起始位置,距离图片左上角的距离;
- $sourceWidth, $sourceHeight是指沿着X轴,Y轴截取的距离;
2、上传图片裁切
上传图片宽高比例不是前台显示的,通过裁切可以实现前台div内铺满
imagecut方法裁切
说明:
- 上下2个方法通过对比会发现几乎都是一样的,不同点主要在imagecopy()的参数也就是$sourceX, $sourceY,$sourceWidth, $sourceHeight;
- 比如图片宽度1000px,而我们只想要800px的图片,上边方法就是以图片中心点为原点,多出来的分到了2边,复制的时候是在100px开始, 复制800px的宽度($sourceX=100;$sourceWidth=800;),Y轴方向的是同样的道理;
- 如果就想以图片左上角为起点,开始复制或者理解为裁切也是可以的;
3、预览图片裁切上传
图1 jquery图片预览裁切上传
- 预览使用的是jquery插件做的效果,js不能裁切,只是做了选取框,通过提交给后台php去裁切,传递的参数就是$sourceX, $sourceY, $sourceWidth, $sourceHeight,还有图片名称(包含路径要不就是后台自动添加路径);
- 预览的图片很可能不是图片的原始大小,是经过缩小的,比如原始1000px,而我们设置了div容器宽度为500px;选取框没有经过缩小,那么裁切图片上边传递的几个参数就是不准确的;
- 如果原图比我们的容器要小,可以上传图片之前预览,把这几个参数同时传递到后台,上传完成以后使用上边的第2种情况裁切;
- 大的图片应该先上传使用第2种情况裁切(宽度和高度不能超过我们预览图片的容器),返回裁切以后的图片到预览的窗口;
加载对应的js,css
说明:
使用了imgareaselect插件,实现预览裁切的效果,但是该插件在jquery1.9以后会出错,因为1.9以后取消了判断浏览器的方法,可以使用migrate插件使其继续生效,也可以直接使用jquery1.9以前的版本,也就不再需要migrate。
html代码
说明:
x1,y1,xwidth,yheight对应了$sourceX, $sourceY, $sourceWidth, $sourceHeight
js代码
说明:
- 鼠标移动的时候触发cutinfo方法,实时获取坐标,赋值给对应的文本框;
- 最大宽度 和最小宽度设置一样,可以固定选择框的大小;
- 上边的初始值就是通过计算,让选择框居中;
- 可能会出现当前默认的就是用户要裁切的图,所以要有个默认位置的初始值;
总结:
1)(imagecreatetruecolor)创建图像,只需要宽高
$cropped_image = imagecreatetruecolor($scale_width, $scale_height);
2)(imagecopy)复制图片到目标图
imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $scale_width, $scale_height);
$source_x, $source_y, $scale_width, $scale_height从哪个位置开始复制,复制的宽度,高度;
$source_image是调整比例以后的图片,如果不需要调整,那就是我们的原图;
3)(imagecopyresampled)复制过来的图片按比例缩小放到到目标图
imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $scale_width, $scale_height);
- 因为已经调整过比例,直接以左上角为起点就可以,不必更改原点;
- 如果不经过前边的步骤直接使用imagecopyresampled,生成的缩略图比例就是错的,图片会走形;
如果按照上述步骤不好理解,可以换个角度,就像我们用软件制图一样。
- 创建宽高的空白图像;
- 调整原图比例,使其符合要目标图的比例,多出来的宽度或者高度分到2边,裁切(复制)中间部分到目标图;
- 调整新生成的这个图片,以左上角为起点,进行缩小,使其宽度高度,均达到目标图的要求;
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。