隔壁计科学院有个考试系统,就要来分析了一下
很好程序到手,直接运行分析
直接上wireshark抓包,看看是什么如何通信
emmmm,着熟悉的语法,不过看了下请求中并没有带账户密码等连接信息。不管了,先用NMAP扫描一波
确定是MSSQL,好,IDA走起,不对,在此之前先康康有没有壳。
有个ASPack壳,这个壳好说,手脱或者脱壳机都可以。我就直接上看雪的脱壳机了
发现是delphi。。有点古老。。我还以为至少是vc++6.0+mfc的程序呢
然而启动失败,不过有界面出来只是崩溃,并不影响IDA。
直接搜索ip的字符串
双击,然后按X查找引用。
被压入了个函数,疑似个解码,先不管了懒得看这个。
想想delphi这种古老的东西是如何连解mssql的,试着搜索了下user id=
大概逻辑在这下面了。然而堆栈并不平衡。估计是脱壳的时候出了点问题。
现在有两个办法,一个是直接拿头硬怼跑密码,反正我是不想。第二个就是动态调试。
那还能怎么办,果断动态调试。OD走起。
先设置CreateWindow的断点。到断点然后搜索字符串
flow进去,然后右键,内存访问
这样有谁访问这个内存我们就会都知道啦
然后执行,执行到这的时候使命按F7单步,然后看地下栈调用。
最后手都按酸了,终于找到了
就此大功告成,不过在输入密码的时候,发现密码不对,看到这有三个框框,对应hex是1F1A3B,我原本以为是mssqsl的自定义颜色,输入进去也不对。最后放弃思考,直接把这三个东西复制到密码框里面连解。
嘿。成了。
进mssql,那肯定惯例xps_cmdshell了,然而运行了发现并没有回显,没报错也没回显。八成被什么东西给拦截了
我们换个方式
使用
declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\log.txt'
执行数据,然后再用
create table tmp_text (lines nvarchar(1000))
bulk insert tmp_text from N'C:\log.txt'
select * from tmp_text
drop table tmp_text
读取,我们先查看权限
emmmm,system。直接新建一个用户吧。
连接成功。
END