JAVA代码审计03: WebGoat SQL注入靶场审计01

微信扫一扫,分享到朋友圈

JAVA代码审计03: WebGoat SQL注入靶场审计01

0x00 前言

之前简单的审计了一下登录和注册,说实话有的逻辑看了好久没有怎么看明白,打算先继续看下去后面水平有所提升了再回来看,所以今天我们就先审计Webgoat SQL注入靶场的前面几节

0x01 SQL Lesson 9

前面都是sql注入的介绍,我们直接来看到lesson9,首先请求一下看一下前端请求后端的接口地址

还是像之前一样,全局进行一个搜索,我们首先来看PostMapping那一个代码

看代码发现红框处直接进行了SQL语句的拼接

我们来打个断点分析一下

可以看到我们输入的内容没有经过任何过滤就直接拼接来进去

然后我们再跟进一下injectableQuery,其实就是下面一个方法

可以看到我们传入的参数给了accountName,我们再来打一下断点看看一下accountName的数值是什么

可以看到我们传入的数据直接可以通过引号闭合sql语句的引号

SELECT * FROM user_data WHERE first_name = 'John' and last_name = ' + 'Smith or 1='1 + '

然后就可以看到我们所有的数据都回显出来了

0x02 SQL Lesson 10

同样的发送请求来定位我们后端的接口

然后在代码中进行一个定位 ,定位到如下的片段

由于大体结构都和之前的差不多所以这里就不多赘述了,我们来看到第56行,发现

"SELECT * From user_data WHERE Login_Count = ? and userid= " + accountName

可以看到Login_Count 后面是 ? 这个一看就发现是对数据进行了一个预编译

然后后面的代码会将Login_Count转换成数字类型如果没有出错才会进行后续的操作

然后再进行sql语句的执行

所以这里的注入点事后面的accountname,直接进行了一个拼接,所以我们只需要如下payload即可

MySQL全面瓦解6:查询的基本操作

上一篇

明明各方面都不错,为什么我还是单身?

下一篇

你也可能喜欢

JAVA代码审计03: WebGoat SQL注入靶场审计01

长按储存图像,分享给朋友