本次讲一个入侵公司OA系统,获取公司员工薪资待遇的故事。首先声明一下,入侵人不是我,是我的一个朋友,为方便叙述,在这里使用第一人称。

之前在某软件公司,使用的OA系统是由一家比较知名的另一软件公司深度定制的。里面使用了大量的javascript。有一次公司OA上新增了一个模块,用于查询员工的XX信息。当时我点击进去一看,XX的值竟然有光标闪烁,而且还可以输入值,当时我的第一反应就是,这应该是一个text域,一看源代码,果然是。那么我就想,既然是可编辑的text域,那么我可不可以提交此值呢?接着就去研究相关的源代码,然后竟然发现了查询XX值的SQL语句!哈哈,有了SQL我什么事不能做?不过SQL并不能直接执行。通过更深入的研究,又破解了SQL执行机制。然后,激动人心的时刻到了,我把XX的update sql通过脚本执行的时候,弹出了一个乱码提示框,而且重新加载XX信息界面,XX的值并没有更改。当时心里还是蛮慌的,以为失败了。而且,本次入侵,我使用的是局域网,人事/IT会不会来找我?过了两天发现我修改的XX竟然生效了~ 而且也没有谁来找我。于是,我邪恶地笑了,接下来是研究我的工资模块。有了之前的研究成果,我的进展很顺利,我可以在我的脚本写顺序查询自己的工资。接下来,就是研究怎么查询他人的工资了。我试着通过调试程序,将某个熟悉的同事的工号等信息替换成我的,然后继续执行。结果成功的查询到了。然后,通过再次深入的研究OA系统,并不断的优化。实现了点击一个按钮,将全公司除了隶属总公司的员工薪水信息导出到excel中。

PS1:IE虽然不受前端工程师欢迎,不过拿来做入侵还是不错的。
PS2:前端不要暴露表结构,哪怕是跟表结构相关的。
PS3:世人无难事,就怕有心人,虽然花了不少时间,但还是值得的。