前言
上次我们的手把手java审计第二天文章分析了路由,这次我们直接来猛猛的审计注入,刚好这是以前室友的毕业设计,直接把他打穿让室友懵逼。
GitHub源码链接
https://gitee.com/zj1983/zz
注入猛猛的审计过程
一、UserLogin前台注入*1
跟入UserLogin函数,传入user_id、password、、orgid三个参数跟入GetDBUser函数,可以看到没有进行预编译直接拼接sql语句,所以这里存在一个sql注入
回到UserLogin函数,在136行对输入的密码进行了加密 接着137行判断用户输入的密码是否一致 如果正确跳转到/main后台页面,并设置用户Session
跟入CreatePassword函数,可以看见开发把密码进行MD5加密之后,把加密后的32个字符拆成四段再分别MD5加密一次,最后全部拼接起来再次MD5加密,总共MD5加密了三次,密码不可逆无法解开
首先之前我们在sql语句看到,管理员密码在z_user数据表当中,我们直接查询该表即可
sqlmap -u "http://192.168.30.220:8081/UserLogin?user_id=a" --current-db --batch //查询当前数据库名
sqlmap -u "http://192.168.30.220:8081/UserLogin?user_id=a" -D z -T z_user --dump --batch //指定数据库名为z,数据表名为z_user,列出里面的数据
果然解不开,caonima
二、UserLoginJson前台注入*2(同上)
管理员登录接口也一样,几乎一模一样的代码
user_id参数添加单引号,页面sql语句报错
http://192.168.30.220:8081/UserLoginJson?user_id=a%27
三、getUserOrgForUserId前台注入*3
用户传入userId参数被带入到34行GetUserOrg函数里
跟入GetUserOrg函数可以看到直接带入到sql语句中
userId参数添加单引号,页面sql语句报错
http://192.168.30.220:8081/getUserOrgForUserId?userId=%27
四、RunSQL任意SQL执行 61行获取db参数,去76行判断是否存在用户输入的数据库 如果是,77行选择进入该数据库
使用分号进行分割sql语句
然后没有任何过滤的执行它
任意sql语句执行,直接拿下室友的数据库权限
总结
原文始发于微信公众号(湘安无事):java手把手审计第三天之猛猛注入室友毕业设计靶场
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论