WebGoat使用8080端口,因此在浏览器上访问localhost:8080/WebGoat
,进入WebGoat以后,能够看到有不少题目来让咱们进行练习。web
将带有攻击性的URL做为输入源,例如输入<script>alert("hzy attack succeed!");</script>
,就会弹出对话框:正则表达式
虽然这个效果和上一个存储型XSS实验的效果相似,可是二者所用的原理不同,存储型XSS是持久化的,代码是存储在服务器中。sql
咱们在message框中输入这样一串代码:<img src="http://localhost:8080/WebGoat/attack?Screen=283&menu=900&transferFunds=4000"/>
,注意这里面的Screen和menu的值每一个人的电脑可能不同,能够在当前页面的右边有个Parameters进行查看:数据库
提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。浏览器
在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=5000
进入确认转帐请求页面:安全
以后看了一下网页的源代码,发现transferFunds
的值变成了CONFIRM
:服务器
因而点击了CONFIRM
按钮以后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=CONFIRM
,成功转走了5000元:cookie
这个题是要求可以在目标主机上执行系统命令,咱们能够经过火狐浏览器下的一个扩展Firebug(就是右上角的小虫的标志)对源代码进行修改,例如在BackDoors.help
旁边加上"& netstat -an & ipconfig"
:网络
以后在下拉菜单中能看到咱们修改后的值:xss
选中修改后的值再点view
,能够看到命令被执行,出现系统网络链接状况:
关键是构造一个永真式:
利用换行符伪造一个假的日志信息,在User Name
文本框中输入lxm%0d%0aLogin Succeeded for username: admin
,其中%0d
是回车,%0a
是换行符:
如图所示,攻击成功:
仍是和以前同样,在文本框中输入' or 1=1 --
:
点Go
,攻击成功,全部用户信息都被显示出来:
以用户Neville登陆,在密码栏中输入' or 1=1 --
进行SQL注入,可是登陆失败:
后面查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只容许输入8个字符:
对字符长度进行修改,而后从新登陆,登陆成功:
咱们仍是用上一题的办法先以用户名Larry登陆,登陆以后看到浏览员工信息的按钮是ViewProfile
:
在网页代码中分析一下这个按钮,发现这个地方是以员工ID做为索引传递参数的,咱们要达到经过Larry来浏览老板帐户信息的目的,通常来讲老板的工资都应该是最高的,因此把其中的value值改成101 or 1=1 order by salary desc --
,这样老板的信息就会被排到第一个:
先获得该用户的信息:
能够发现输入的语句没有验证,很容易进行SQL注入,输入注入语句:101; update employee set salary=10000
,成功把该用户的工资涨到了10000:
接下来使用语句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145211@163.com' WHERE userid = NEW.userid
建立一个后门,把表中全部的邮箱和用户ID都设为个人:
输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
查看pin
数值是否大于10000:
Numbers
,步长为1,再设置从2000到2500进行,设置完成后开始攻击:会发现2364的报文长度明显和其余不同,那这个值就应该就是2364将这个值输入到网页中,成功: