WebGoat源码审计之SQL注入篇

作者:网友投稿 时间:2018-05-07 09:32

字号

WebGoat是一个基于java写的开源漏洞靶场,本期斗哥带来WebGoat的SQL注入攻击例子及相对应的JAVA源码审计。

0×01 String SQL Injection

这个注入页面是页面,该页面的主要功能是让我们输入用户名从而获取用户名的信息,此处存在SQL注入。

注入.png

输入Smith得到Smith用户的账户信息。

账户 信息.png

输入Smith’ and 1=1 –+页面为正常查询结果。

结果.png

输入Smith’ and 1=2 –+页面显示 No results matched,由此判断存在SQL注入。

sql.png

输入Smith’ or 1=1 –+得到所有用户信息,完成实验要求。

shiyan.png

进一步去利用这个SQLi,此处后端数据库使用的是HSQLDB,根据sqlmap的提示得到了更多的注入手段。

把请求的数据包保存成一个txt文件,叫url.txt。

URL.png

python sqlmap.py -r url.txt

TXT.png

python sqlmap.py -r url.txt -D “PUBLIC” -T USER_DATA -C “USERID,FIRST_NAME,LAST_NAME,CC_NUMBER,CC_TYPE” –dump

dump.png

该漏洞链接 :

 

漏洞文件 :

D:\myjava\WebGoat-8.0.0.M14\webgoat-lessons\sql-injection\src\main\java\org\owasp\webgoat\plugin\introduction\SqlInjectionLesson5a.java

该文件开头导入了sql的相关包。

xiangguanbao.png

在该文件的第48~67行,可以看到用到了该文件先是获取POST请求中文中account的值拼接到SQL语句,由executeQuery函数执行了该语句。

yuju.png

由于从获取值,到拼接查询整个过程,代码并未对用户输入做任何处理,导致输入用户可控从而造成SQL注入漏洞,另外此处的注入类型为字符型注入,由语句String query = “SELECT * FROM user_data WHERE last_name = ‘” + accountName + “‘”;便可知晓。

0×02 Numeric SQL Injection

这个注入页面是页面,该页面的主要功能是通过用户ID来获取用户信息。

xinxi.png

输入101得到该ID账户的信息。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接