Web安全:SQL注入
参考文章:SQL注入原理 一. SQL注入概述直接原因是没有对用户输入做检查,导致用户输入恶意SQL语句。根本原因是违反数据和代码分离的设计原则,将用户恶意输入当做代码进行执行。有以下解决方案: 输入检查 预编译其中预编译符合数据和代码分离的原则,提前为输入数据提供类型,编译时为数据部分预留空间。这样用户输入智能为某一数据类型,就解决了这个问题。数据和代码分离原则,先用一个数据类型接收用户输入,再用代码操纵这个数据类型。预编译是一种实现方式。 二. SQL注入实例情景一:输入账号,密码登录后端查询语句:*一般来说#{}这种形式是进行预编译的,而{{}}则没有。查询语句:select * from user where username='{{}}' and password='{{}}'后端代码: 12345if affect_row==1: return "succeed"els...
Web开发:MySQL
一. MySQL概述MySQL启动&终止启动服务net start mysql 终止服务net stop mysql 登录:如果找不到环境变量(路径),则在SQL文件的bin目录下启动不成功也可能是mysql服务没开mysql -u root -p MySQL操作语言数据库:show databasesuse xxxshow tables 查:select * from table 增:insert into table values(int,"str") 删:delete from table where id=int 改:update table set col="xxx" where id=int
Web安全-XSS
一. XSS1. 反射&DOM2. 存储
SEED:SQL Injection Attack Lab
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version) SQL注入概述…….一、 作业题目SQL注入实验二、 实验步骤及结果1. 实验环境拓扑结构本次实验镜像有两个容器,其中一个是Web服务器,另外一个则用于托管Web程序的数据库。Web服务器的IP地址为:10.9.0.5域名:Web服务的URL地址为:http://www.seed-server.com为了确保这个URL地址能够被解析,你需要查看/etc/hosts文件,确保该URL条目绑定Web服务器IP地址。如果不是,使用root权限修改这个条目。MySQL数据库:数据库服务器的IP地址为:10.9.0.6Web应用程序:这是一个简单的员工管理应用程序。员工可以通过此web应用程序查看和更新数据库中的个人信息。该web应用程序主要有两个角色:管理员是一个特权角色,可以管理每个员工的个人资料信息;员工是一个正常的角色,可以查看或更新他/她自己的个人资料信息。所有员工信息如表1所示。2. 熟悉SQL语句在SQL服务器已经创建了一个...
SEED:XSS
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version) XSS概述…… 实验概述 实验环境设置 DNS设置:使用命令sudo vim /etc/hosts编辑本地DNS配置,需要注意的是多个域名是可以定向到同一个IP地址的,因为Web服务器可以通过HTTP协议的hosts字段来区分访问的服务。 启动docker服务:使用命令dcbuild和dcup启动docker配置的服务,一般来说docker启动服务没有什么问题,以下是服务成功启动的截图: 准备工具“HTTP Header Live”: 任务 在浏览器提示框发布恶意消息使用Java Script代码写一段这样的功能很简单:alert(‘XSS’);是JS代码部分,script标签在html中声明这是一段JS代码。另外,这当代码过长时可以使用链接的方法方法,将指定路径的JS代码记载执行:下面需要将这段恶意js代码注入到该网站中,登录samy的账号,在个人资料中的“brief description”中进行注入:点击保存,Web服务器会将你的...
SEED:Environment Variable and Set-UID Program Lab
Environment Variable and Set-UID Program Lab1. Task1 Get Familiar with the Shellcode修改shellcode_32.py文件,使其能够删除文件。 测试在该目录下创建文件task1,通过ls命令发现task1文件创建成功。 可以看到执行a32.out文件后,通过ls命令发现task1文件被删除。 2. Task2 Level-1 Attackattack-code传入hello,获取server的堆栈信息。 Buf基地址为:0xffffd598Ebp地址为:0xffffd608 编写exploit.py文件。在32位环境下,ret地址为ebp地址+4(单位为字节),已知buf基地址,则偏移量为ebp地址+4-buf基地址。ret的值存储指令地址,要执行shellcode,因此要将ret指向shellcode地址。而shellcode使用了Nop填充,所以ret指向ret+4即可空转跳转到shellcode。 生成badfile,获取服务器权限 3. Task3 Level-2 Attack att...
dga域名检测
DGA域名通过dga算法生成的域名,需要知道的是dga算法有很多分支。在字符特征上与普通域名有一些差别,dga域名通常是一些无意义的数字和字母,而正常域名通常带有一些意义比如baidu.com(百度),另外正常域名通常有更多的元音字母,因为这让人更加容易记住和读。不过,随着dga域名的改进(通过正常域名修改两个字母等),这些差距都可以被缩小,dga域名将会变得越来越像正常域名,这时候依靠于字符特征是难以起效了。因此,找出dga域名更加深层的特征是必要的,dga域名通常用于黑客和僵尸网络通信,因此这将是未来一个有意义的方向。下面,我们使用lstm检测dga域名,因为lstm相比于tf-idf和词袋模型更好的捕捉词语间的语序信息。需要注意的是,我们训练的模型依然依靠的是dga域名的字符信息,因此这个模型具有局限性。 源代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071...
SEED:Shellcode Development Lab
一. Shellcode概述shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这些技术,以便他们能够编写自己的shellcode。编写shellcode有几个挑战,一个是确保二进制文件中没有0x00,另一个是找出命令中使用的数据的地址。第一个挑战不是很难解决,有几种方法可以解决它。第二个挑战的解决方案导致了编写外壳代码的两种典型方法。在一种方法中,数据在执行期间被推入堆栈,因此可以从堆栈指针获得它们的地址。在第二种方法中,数据存储在代码区域中,就在调用指令之后,因此在调用调用函数时,其地址被推入堆栈(作为返回地址)。两种解决方案都非常优雅,我们希望学生能够学习这两种技术。 二. 实验1. Task1 Writing Shellcode1.1. Task1.a The Entire ProcessCompiling to object code使用...
Web 登录实现&身份认证
开发工具&环境前端vue集成html,css,javascript 后端SpringBoot集成mybatis,java,tomcat 数据库Mysql以及图形化界面SQLyogEnt 具体过程数据库数据-java对象/Dao(mapper)—> 程序数据 (controller)—> 后端数据 —tomcat—> 前端数据 -vue-> html数据 数据结构&接口文档数据结构数据库user表id,username,password;将id设置为主键 Java类新建User类:int id,String username,String password 接口文档1. 用户注册:POST localhost/auth/registerusername: “xxx”hash_password: “xxx” 2. 用户登录:POST localhost/auth/loginusername: “xxx”password: “xxx”return token 2. 拉取用户信息:GET loca...
SEED:Buffer Overflow Attack Lab (Server Version)
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version)网络攻防技术——缓冲区溢出攻击(基于服务器) 一 缓存区溢出攻击概述C语言和堆栈局部变量函数中定义的变量 堆内存大,链表,碎片化 栈(堆栈)内存小,编译器决定1-8MB,后进先出LIFO,快 局部变量和堆栈c语言进阶:堆栈原理揭秘C语言有很多不同类别的数据,他们有不同的生命周期,这不是C语言本身决定的,而是操作系统存放这些数据的位置决定了他们的生命周期。运行一个程序,操作系统会将数据其映射到内存中,不同的数据将会映射到不同的内存中栈/堆/代码区等。 函数调用和堆栈缓冲区溢出原理一文理解缓冲区溢出缓冲区溢出被定义为程序试图将数据写入缓冲区边界之外的情况。恶意用户可以利用此漏洞更改程序的流控制,从而导致恶意代码的执行。 栈溢出详解缓冲区溢出在栈溢出上应用很多,因为当程序调用函数时,会将返回地址ret暂时存在栈区上。如果构造一次恶意溢出使用恶意抵制覆盖返回地址ret的值,那么将可以控制程序流甚至执行以进程权限执行任意程序。如果这个进程是根权限,那么...








