cp指令在Linux 下的預設行為會蓋掉目的地的同檔名檔案
假設你在家目錄下有一個自己寫的作業檔 homework.txt
fvalinux 發表在 痞客邦 留言(0) 人氣(103)
http://wiki.wireshark.org/SSL
http://wirewatcher.wordpress.com/2010/07/20/decrypting-ssl-traffic-with-wireshark-and-ways-to-prevent-it/
去年在打金盾獎決賽時遇到的一個題目,給你一個內含SSL封包的pcap檔,要求你來解密.
Wireshark這個功能聽起來好像很炫,很神奇.
但如果你了解SSL加密的情況時,就會知道你還是需要一把ssl server的private key才可以.
因為在PKI架構下,雖然packet本身的加密是使用client的對稱式key來加密,
但這把key一開產生出來時會用server的public key來加密,
傳給server, 告訴server說之後的通訊都用這把對稱式key來加解密.
也因此要解出這把對稱式key,你也就要有server的private key才行.
(或是直接從browser得知自己client產生的對稱式key來解密SSL封包,
Firefox外掛的httpfox應該就是用這種方式,
burpsuite套件是使用類似MITM的手法來監視,修改封包)
Wireshark官網提供了一組 example檔讓你來練習,這個example檔是用
印度蛇油的 CA key來加密的.
聽名稱就知道這個是騙人的東西,所以它一般也附在各Linux distribution裡面.
補充說明:
有些SSL server和browser支援更安全的協定ECDHE(橢圓曲線的DH金鑰交換演算法)
它最主要就是增加一個特色Perfect Forward Secrecy,
這特色用來保護就算以後Server的私鑰外流了
攻擊者在外流前就算測錄了所有封包也無法解密,因為封包的加密的過程有用到DH演算法
的一個暫時性變數(就是使用DH協定時,雙方只有自己知道的數值,白話一點的就解釋就是,DH每次的對話,公私鑰都是隨機生成的,所以你這次的私鑰外流了,只能解出這次的對稱式金鑰還有明文而已,但用RSA交換金鑰的話,因為RSA公私鑰是固定的,所以一但私鑰外流,過去所加密的對稱式金鑰以及明文都會被破解),
沒有這變數就算你拿到Server私鑰也無法解密封包.
在SSL協定的Cipher Suite列表中,有使用ECDHE的Cipher Suite會比較建議排在前面
再來是DHE最後是沒有使用金鑰交換協議的協定.
可以參考維基百科主機的SSL server test(目前測試被評為A+)
https://www.ssllabs.com/ssltest/analyze.html?d=en.wikipedia.org&hideResults=on
關於Perfect Forward Secrecy詳細介紹可以參考Vincent Bernat寫的這篇文章
SSL/TLS & Perfect Forward Secrecy
fvalinux 發表在 痞客邦 留言(0) 人氣(6,061)
今天在看Wikipedia的條目時
域名伺服器快取污染
發現到原來除了DNS zone transfer以外,一般的DNS query也可以走TCP協定...
使用方法就是在指令後面加上 vc (virtual circuit)這個option.
fvalinux 發表在 痞客邦 留言(0) 人氣(1,261)
之前看過的文章,今天突然想到post出來
Top Ten Reasons not to use the C shell
http://www.grymoire.com/Unix/CshTop10.txt
fvalinux 發表在 痞客邦 留言(0) 人氣(56)
之前看到網友推薦的一本電子書
《Linux C编程一站式学习》
http://akaedu.github.io/book/
才知道原來C語言有所謂的 "對齊" alignment
為的是讓記憶體搜尋資料時的速度可以比較快
因此在structure裡面宣告變數時,宣告位置的不同會造成整個structure的size也不一樣
#include<stdio.h>
int main(int argc , char **argv)
{
struct student{
int i;
char a;
int j;
};
printf("size of student structure is %ld\n", sizeof(struct student));
return 0;
}
~ $ gcc -o alignment alignment.c && ./alignment
12
------------------------------
因為中間的 char a的大小為1, 編譯器會自動在 變數 a後面加3個bytes的padding 以增進記憶體位置的效率
------------------------------
#include<stdio.h>
int main(int argc , char **argv)
{
struct student{
int i;
int j;
short a;
short b;
};
printf("size of short is %ld\n", sizeof(short));
printf("size of student structure is %ld\n", sizeof(struct student));
return 0;
}
~ $ gcc -o alignment alignment.c && ./alignment
size of short is 2
size of student structure is 12
------------------------------
在只有宣告一個short變數時,會自動增加2 bytes的padding
但第二個例子,因為後面有宣告short b,所以可以不用增加padding
原則就是structure的整個大小最後一定會是最大size的變數(此處為int) 的 倍數.
來看稍微複雜的例子
------------------------------
struct abc{
int a;
char b;
int c;
char d;
}
------------------------------
size of 為16
------------------------------
struct abc{
int a;
int c;
char d;
char b;
}
------------------------------
size of 為12
------------------------------
第一個為16是因為兩個char變數都有個別去增加3byte的padding,因此為16
第二個為12是因為char b後面只要再增加2個bytes的padding就可以完成對齊了.
=================
在程式碼前面增加一行
#pragma pack(1)
說可以無視alignment這個規定
只要去計算每個變數實際的小大即可
fvalinux 發表在 痞客邦 留言(0) 人氣(1,409)
好像比較少中文文章介紹如何使用GPG來驗證File Integrity
還好找到了一篇Apache官網的介紹文章
http://httpd.apache.org/dev/verification.html
一般來說,驗證檔案的方式最常見的還有用hash的方法
fvalinux 發表在 痞客邦 留言(1) 人氣(1,579)
http://seclists.org/fulldisclosure/2011/Aug/175
這種針對Apache的DDOS攻擊而來的手法
是利用Apache本身在處理HTTP protocol時,針對Range欄位處理有弱點造成的.
fvalinux 發表在 痞客邦 留言(0) 人氣(587)
搜尋到的好文章...
http://i-pogo.blogspot.com/2010/01/usrbinld-cannot-find-lxxx.html
解決 /usr/bin/ld: cannot find -lxxx 問題
問題:
在linux環境編譯應用程式或lib的source code時常常會出現如下的錯誤訊息:
fvalinux 發表在 痞客邦 留言(0) 人氣(177)
Now.in作者Victor針對COSCUP報名時,主機每次掛點的原因做探討
http://blog.ez2learn.com/2011/07/15/usual-linux-down-reason/
寫的相當棒的文章!!
fvalinux 發表在 痞客邦 留言(0) 人氣(92)
SSH tunnel就是在跟遠端的ssh server 建立連線以後,可以透過這個ssh tcp連線來開一個tunnel(通道、隧道)來"彼此"互傳訊息.
(注意:這不是SSH VPN,兩者是不一樣的)
在 putty的tunnel頁面裡面,有3種方式來使用.
第一種為Local方式,原理就是在 ssh client端開一個port來listen,然後可以讓browser等應用程式透過這個目前正在listen的port來跟遠端的ssh sever做溝通,叫ssh server幫我要資料.
譬如:Local方式、source port是8801、Destination是whatismyipaddress.com:80
然後在browser的url裡面打入「http://localhost:8801」就可以透過ssh server連到whatismyipaddress.com的80 port...然後看到的ip是ssh server的public ip.
第2種是Remote方式,原理跟第一個剛好相反,就是說讓ssh server那邊開一個port讓ssh server自己去listen
然後ssh server可以連到它自己開的port會透過我們彼此ssh 連線,連來我client這邊,由我client去幫server要資料.
譬如:Remote方式、source port是9901、Destination是whatismyipaddress.com:80
如果ssh server直接去瀏覽whatismyipaddress.com:80,它會在該頁面看到它自己的public ip
但是如果ssh server是去瀏覽localhost:9901,那麼ssh server就會在該頁面看到我 ssh client的ip,因為是我去幫它要的.
第3種就是Dynamic方式,就是可以用來做將ssh server做socks proxy的用途.
只要設定source port即可.然後ssh client端只要在 IE等應用程式下設定好socks proxy即可透過ssh server來連線.
譬如:Dynamic方式、source port是9999,然後在IE上面設定socks proxy,連到whatismyipaddress.com就可以看到
ssh server的public ip了.
要彈性一點的話(譬如A站走socks proxy, B 站不走socks代理而走原來線路)
可以在browser(Firefox/Google Chrome)裝Foxy Proxy套件來幫助你.
補充:
開啟gateway port的方法
如果你的機器作為一個ssh client連到ssh server後,在本地端listen一個port來作tunnel
你也可以將這一個port分享給其它機器來連線.
在putty裡面的Connection->SSH->tunnels這頁裡面的
Local ports accept connections from other hosts
打勾即可
在linux下的話用 「-g」這個選項就可以了
ssh -g -L 1111:whatismyipaddress.com:80 id@ssh_server
別台機器只要連到client ip的1111這個port就可以在whatismyipaddress.com看到 ssh_server的ip了.
fvalinux 發表在 痞客邦 留言(8) 人氣(899)