20145319 《网络渗透》web安全基础实践
20145319 《网络渗透》web安全基础实践
问题回答
- Sql注入攻击原理,如何防御
- 攻击原理:由于对于用户输入并没做出相应限制,因此可以通过构造特定的sql语句,达到自身的一些非法目的
- 防御方法:对于输入的字符做出限制,例如长度不能太长,不能包含一些特殊字符,使其无法构造sql语句
- XSS攻击的原理,如何防御
- 攻击原理:跨站脚本攻击,其原因也在于对于用户的输入字符没有做出限制,一些恶意用户可以将自身的恶意代码插入在url等地方,诱惑别人访问从而达到目的
- 防御方法:与防御sql注入类似,要检查用户的输入字符串,并做出限制,例如过滤script这类敏感词
- CSRF攻击原理,如何防御
- 攻击原理:通过劫持会话,伪造身份等方式来达到一些非法目的,例如转账,支付等
- 防御方法:使用验证码,表单中附加随机值,以此来防止冒充,在对于用户的隐私数据尽量进行加密处理,加密传输
实验过程
键入命令
java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat
浏览器中输入
http://127.0.0.1:8080/WebGoat使用默认用户名和密码登录即可
sql注入练习(字符串注入)
在菜单栏中选择
String SQL Injection
第一题大意是要求我们使用sql注入来调用全部用户的银行卡信息(英文原文就不再补充了),实现sql注入的关键就是如何构造出我们想要的sql语句,我们首先来观察网站给出的示例

我们可以很轻易的找出网站是如何将用户输入的字符串拼接到早已经设计好的字符串中组成sql语句的——将输入的字符串填入到最后的引号之间,而我们如何能将所有的用户信息输出——只需要将where后的条件构造成永远为真即可
首先我们要使用引号闭合第一个限制条件last_name并在后面再加上我们的构造的条件,使其永远为真,例如
or 1=1或者or 2=2这类均可,于是,我们填入的字符串可以如下
sql注入练习(数字型)
在菜单栏中选择
Numberic SQL Injection本次的注入和上次不同,该题并没有文本框让我们直接进行输入操作,我们只能通过滑动文本框选择地点,sql语句的生成代码可能是写在web页面的源码中,也可能是在后台服务中进行,但是无论是哪一种,表单都需要将搜集到的信息写进数据包中通过网络传输给后台,这就给了我们篡改的机会
我们先随便选择一个地点并进行查询,根据其反馈的sql语句来看,我们需要修改的就是station部分,之后我们就需要用到另一个工具burp-suite,通过将burp-suite设置浏览器的代理服务器,作为中间服务器,这样我们就可以截获从浏览器中发送出去的所有数据包,并将其中内容修改成我们想要的样子
打开burp-suite在proxy的options选项中添加新的代理(默认为8080,不过被apache2占用了)
修改了浏览器的代理服务器之后,随便选择一个城市就会发现burp-suite中已经抓到了我们刚刚发送出去的数据包(我这次选择了new york,station=103)

其中第一行中的station部分就是我们这次修改的目标了,将station修改成
station=103 or 1=1之后点击forward将数据包发送,查看response包,结果却和想象中的又一些出入(显示505错误)
这是因为我们在修改的时候并没有注意到编码问题,在url编码中,并无法直接识别空格和等于号,因此在读取http版本时候发生了错误,无法得到正确结果,在查询url编码之后(空格为%20,等于号为%3d),将station修改成
station=103%20or%201%3d1,之后点击forward即可得到正确结果
sql注入练习(命令型)
命令型注入就是通过我们已掌握的sql注入的方法,给目标操作系统注入dos命令(这里依然通过burp-suite修改数据包的方式来完成注入),第一步还是查看反馈的sql语句

我们观察反馈的sql语句,首先就需要使用双引号封闭第一部分,再通过&&附加上我们的另一部分想要执行的命令,例如
"&&echo 5319",再注意url编码的问题,在helpfile栏的最后添加"%26%26echo%205319"就可以得到结果
Log spoofing
题意是要我们使用管理员admin身份完成登录,其实就只是要根本的目的是将管理员admin登录成功这一条记录写进日志中
首先我们进行尝试,无论我们输入什么username,日志都显示登录失败

这次我尝试对输入的username做出一些改变输入
guest ok来查看反馈结果
这样我们就有一个思路如果我们输入任意用户名之后,接上我们想要写进日志里的记录是不是就达到了我们的目的,于是我们在考虑换行符的编码的情况下可以这样构造这样一条语句
guest%0aLogin Succeeded for username:admin最后结果显示欺骗成功
sql注入练习(盲数字注入)
- 按照题目的意思是,我们可以验证已经输入的数字是否合法,例如101,因此我们可以构造
条件1 AND 条件2,观察最终结果是否合法来判断条件2是否为真 - 例如我们可以构造
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5319 );来验证其设定的pin值是否大于5319,按照这个原理,我们可以不断的缩小所要搜寻的pin的值,直到找到该pin值 - 不过我不是很理解的是,为何不通过直接输入数字观察结果为valid或者invalid来判断该数字大于还是小于pin值,通过二分法同样可以一步一步逼近设定的pin值,并不知道为何还需要注入
sql注入练习(盲字符串注入)
- 基本思路类似于之前的盲数字注入,只是猜测的对象变成了字符所对应的ascii码,从根本上来说其实还是一种对数字的猜测
- 构造
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), x, y) = 'h' );来测试出我们需要的字符串到底是啥 - 因为这个测试次数较之上一个实验要多,所以完全依靠手工输入的工作量太大,建议学习蔡野同学的做法,使用burp-suite中的intruder中的payloads来进行爆破,一一测试所有可能性
xss练习(存储型)
大意就是它会将你填写在文本框中的内容存储起来并发给他人,包括javascript代码
所以这个我们只需要在文本框中随便填写一些代码作为实验即可,例如
<script>
alert(5319);
</script>
当你点开下方的链接时就会弹出内容为5319的对话框
xss练习(反射型)
- 看了一下题目中的介绍,大概意思就是在反射型xss攻击中,攻击者可以往其他网站的url网址部分中插入script代码,来发给他人,来实现自身目的,与上一个练习的内容基本类似(一个直接写在文本中,一个写在网址里)
- 例如:
www.baidu.com/<script>alert(5319);</script>输入之后就会弹出内容为5319的对话框
xss练习(跨站脚本钓鱼攻击)
在菜单栏中依次选择
Cross-site scripting,phishing with xss,这个攻击类似于上一个练习的一个进阶版,不仅能插入script标签还能插入其他标签构成完整的web代码(如下)</form>
<script>
function hello(){
alert("hello,5319");
}
</script>
<form>
<br><br><h2>please input your stu_number and pwd</h2><br><br>
stu_number:
<br><input type="text" name="stunumber"><br>
password:
<br><input type="password" name="pwd"><br>
<input type="submit" name="submit" value="login" onclick="hello()"> </form>
将如下简单的代码输入到输入框中,弹出如下界面,输入学号密码点击Login则会弹出
hello,5319的弹窗,只要修改scprit标签中的函数,就可以实现更多非法功能,例如记录下用户输入的用户信息等
CSRF Prompt by-pass
其实这个比较好实现,为了成功完成欺骗,您需要获得一个验证请求Token,这个就只需要通过文本框中嵌入两个标签,一个实现用户转账,一个实现确认界面,显示相关表单的外部参数为
transferFunds=main,构造相应语句就可以实现我们的目的hello
<img src='attack?Screen=400&menu=800&transferFunds=zk19'zk19 width='1' height='1'> <img src='attack?Screen=400&menu=800&transferFunds=CONFIRM' width='1' height='1'>
20145319 《网络渗透》web安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20155324《网络对抗技术》web安全基础实践
20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
- 20145308 《网络对抗》Web安全基础实践 学习总结
20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...
随机推荐
- CodeForces - 617E XOR and Favorite Number 莫队算法
https://vjudge.net/problem/CodeForces-617E 题意,给你n个数ax,m个询问Ly,Ry, 问LR内有几对i,j,使得ai^...^ aj =k. 题解:第一道 ...
- Oracle管理监控之检查数据库和日常维护数据库
linux系统的系统日志一般位于/var/log目录下.linux的系统日志由一个叫syslog的进程管理的,如下日志都是由syslog服务驱动的. /var/log/ messages:记录linu ...
- Linux crontab下关于使用date命令和sudo命令的坑
想要在root 的crontab里面加一些任务计划,希望以www用户运行命令,并且将输出重定向到某处以当时时间命名的日志文件,大致如下 /usr/bin/sudo -u www /usr/local/ ...
- C# 枚举 小总结
枚举 枚举类型声明为一组相关的符号常数定义了一个类型名称. 枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.例如:假设你必须定义一个变量,该变量的值表示一周中的一天.该变量只能存储七 ...
- Python性能鸡汤(转)
英文原文:http://blog.monitis.com/index.php/2012/02/13/python-performance-tips-part-1/ 英文原文:http://blog.m ...
- linux平台mysql密码设破解
1.先停止mysql服务 service mysqld stop 2.启动mysql服务 并跳过权限认证 mysqld_safe --skip-grant-tables 3.打开另外一个终端 登录my ...
- crontab定时任务-干货案例
自定义需求:实现消息队列. 1.创建一张mysql表结构 2.编写php脚本,便于sh文件执行 3.编写sh脚本,便于crontab定时执行 4.crontab -e 注册定时任务,如果此步不清楚请参 ...
- [py][mx]django通过邮箱找回密码
忘记密码处理流程 注意: 这个文章里的找回密码页面截取有问题. 找回密码页应该是让输入邮箱 直接上代码 class ActiveView(View): # 主要功能是修改user_profile里的i ...
- python内置函数大全(分类)
python内置函数大全 python内建函数 最近一直在看python的document,打算在基础方面重点看一下python的keyword.Build-in Function.Build-in ...
- Jquery map()
<!DOCTYPE html> <html> <head> <style>p { color:red; }</style> <scri ...