全局搜索
${
value
}
,
我们可以找到以下
Mapper
文件
:
//
使用
${}
符,不会对
参数
进行预编译等处理。
先来看
ArticleMapper.xml
,
删除文章和文章内容处均可能存在注入
:
//
更新文章内容使用
#
号
,
则不存在
deleteArticleByIds
,
deleteArticleContentByArticleIds
方法可能存在问题。
根据
Article
Mapper
命名规则
,
这两个方法存在于接口
Article
Dao
中:
//
找不到可以直接全局搜索
deleteArticleByIds
接口
对应
的
实现类
ArticleDaoImpl
:
往上
追溯可发现
ArticleServiceImpl
类
的
deleteArticleByIds
方法
,
调用了
articleDao
接口的
这两个方法,且没做过滤
:
ArticleServiceImpl
类
对应的接口为
ArticleService
:
//
因此只要调用了
ArticleService
接口的
deleteArticleByIds
方法
,
就会触犯上面的
sql
语句
。
全局搜索
delete
A
rticle
B
yIds
,可以找到控制器
AdminArticleController
:
//
delete
方法会进行调用
,
对应的
url
为
/delete
查看控制器
AdminArticleController
信息:
//
确定该接口
url
为
/admin/article
/
delete
,注入点参数为
articelId
全局搜
/admin/article/delete
,可以找到前端页面
ar
ticle-list.jsp:
//
也可以不找前端了
,
因为已经知道
url
和参数名
,
直接发包就行了
。
直接访问会跳到后台登陆界面,因该是做了会话校验:
通过
admin/111111
登陆:
再次访问
:
http://localhost:8080/inxedu_war/admin/article/delete
会跳转至
:
http://localhost:8080/inxedu_war/admin/article/showlist
//
删除按钮就是我们要找的接口
点击删除,抓包,可以看到是我们想要的接口:
输入单引号报错:
原本的
sql
语句为:
构造延时注入语句进行验证
,漏洞存在:
验证完毕
~