目录

  • 前言:
  • 一、简介
  • 二、项目配置
  • 三、代码编写
  • 四、运行测试

前言:

前面完成了 SQL 注入漏洞的数字型输入,其实 SQL 注入漏洞还有很多其他类型的注入,例如:字符型注入、宽字节注入等,相应的绕过方式也有很多种。这次的任务是写一个字符型的 SQL 注入漏洞。

一、简介

对于字符型的 SQL 注入来说,其原理与数字型 SQL 注入类似,区别仅仅在于数字型 SQL 注入是用户从前端输入一个数字类型的数据,然后服务器接收到后直接拼接到预定的 SQL 语句中,导致注入的漏洞产生,而对于字符型 SQL 注入来说,可能需要考虑后端服务器拼接用户输入数据使用的方式,例如是单引号还是双引号?有没有加括号等等,如果加了,就需要考虑单双引号或者括号的闭合的问题。

由于漏洞原理、漏洞利用方式等基本内容与数字型 SQL 注入类似,而上一篇文章中已经详细阐述了相关内容,所以这里便不再赘述。

二、项目配置

pom.xml 导入相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>sqli</artifactId><version>0.0.1-SNAPSHOT</version><name>sqli</name><description>sqli</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

同样需要配置 application.properties,连接数据库,配置匹配路径

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/pikachu?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driverspring.thymeleaf.prefix = classpath:/templates/

三、代码编写

首先创建 springboot 项目,与数字型创建过程及相关设置均相同

实现 controller 层,indexController,实现前端请求匹配到指定 HTML 界面

indexController.java

package com.example.sqli.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class indexController {@RequestMapping(value={"/","/index.html"})public String index(){return "index";}@RequestMapping(value={"sqli_char"})public String sqli_char_index(){return "sqli_char";}
}

然后实现字符型 SQL 注入的后端核心代码,构造漏洞环境

sqli_char.java

    //字符型SQL注入漏洞(测试payload:' or 1=1 #)@RequestMapping("char")public String sqli_char(@RequestParam(value = "id",required = false) String id, Model model) throws SQLException {Connection connection = dataSource.getConnection();Statement stmt = connection.createStatement();sql="select * from users where id = '"+ id +"'";System.out.println(sql);ResultSet rs = stmt.executeQuery(sql);// 通过此对象可以得到表的结构,包括,列名,列的个数,列数据类型while (rs.next()) {Object value = rs.getObject("username");//获取列对应的值。System.out.println(value);model.addAttribute("id",value);}rs.close();connection.close();System.out.println("model:"+model);return "sqli_char";}

然后编写简易的前端测试代码

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>SQL注入</title>
</head>
<body>
<input type="button" value="字符型有回显注入"onclick="javascrtpt:window.location.href='http://localhost:8080/sqli_char'" /></body>
</html>

字符型 SQL 注入前端测试代码

sqli_char.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>字符型SQL注入</title>
</head>
<body><form action="http://localhost:8080/sqli/char" method="get">请输入学号ID: <input type="text" name="id" /><input type="submit" value="查找" />
</form></body>
</html>

四、运行测试

字符型 SQL 注入前端测试界面

payload:' or 1=1 #

回显结果:

查询出所有用户名

剩下的测试 payload 与数字型思路类似,这里也就不再测试,毕竟不是写 writeup。

山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(七)-SQL注入字符型相关推荐

  1. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(二)-docker安装与学习

    目录 前言: 一.docker安装 1.centos7使用yum安装 二.命令行创建 docker 容器测试 前言: 项目实训立项通过后的几天均在学习 docker 的相关知识,上一篇文章也简单记述了 ...

  2. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(六)-SQL注入数字型

    目录 前言: 一.SQL 注入漏洞简介 1.简介 2.危害 3.利用 4.防范 二.相关配置 三.编写"SQL 注入漏洞-数字型注入"后端代码 1.使用 springboot 框架 ...

  3. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(八)-RCE漏洞

    目录 前言: 1.RCE 漏洞简介 1.1.简介 1.2.危害 1.3.利用 1.3.1.漏洞挖掘 1.3.2.windows下管道符 1.3.3.linux下管道符 1.4.防范 2.相关配置 3. ...

  4. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十)-Java反序列化漏洞(2)

    目录 前言: 2.项目配置 3.编写"java 反序列化漏洞"后端代码 4.编写"java 反序列化漏洞"前端代码 5.运行测试 前言: 本篇文章在上一篇文章基 ...

  5. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十三)-任意文件下载漏洞(1)

    目录 前言: 一.任意文件下载 1.任意文件下载漏洞简介 1.1.简介 1.2.危害 1.3.利用 1.4.防范 2.项目配置 前言: 前面的博客记录了关于文件上传漏洞的基础知识,以及基本的漏洞出现点 ...

  6. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十四)-任意文件下载漏洞(2)

    目录 前言: 3.编写"任意文件下载漏洞"后台 4.编写"任意文件下载漏洞"前台 5.运行测试 前言: 前面的博客记录学习任意文件下载漏洞相关知识,并思考如何构 ...

  7. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(三)

    目录 前言 主页面的实现 新增用户 修改用户信息 删除用户 查询用户 前言 首先我要完成的是系统中的用户管理功能,实现对用户的增删改查,以及利用Element-Ui完成对应前端页面的搭建,这篇文章记录 ...

  8. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(二十二)-子域名查询

    目录 2.1.工具简介 2.2.后端实现代码 2.3.前端实现代码 2.1.工具简介 子域名是相对域名根来说的,如baidu.com是域名根,则1234.baidu.com为子域名不同服务级别,也就是 ...

  9. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(二十三)-CMS识别

    目录 3.1.工具简介 3.2.后端实现代码 3.3.前端实现代码 3.1.工具简介 在对「靶标资产」进行渗透测试的前期,通常需要对「靶标资产」进行相关的信息收集,而对「靶标资产」进行Web指纹信息扫 ...

最新文章

  1. deeplearning模型分析
  2. html5小趣味知识点系列(一)autofocus
  3. constraint的一些用法总结
  4. pytorch训练过程中loss出现NaN的原因及可采取的方法
  5. 《告别失控:软件开发团队管理必读》一一第1章 程序员为何难以管理
  6. boost random library的使用
  7. Dubbo负载均衡与集群容错
  8. 用不同显卡训练gan的区别_面霜质地这么多,到底哪一种最好用?不同质地面霜有什么区别?...
  9. [html] 你有了解HTML5的地理定位吗?怎么使用?
  10. Ubuntu配置java环境
  11. 【月报】Java知音的四月汇总
  12. 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序
  13. 查看数值类型python_Python数据科学实践 | 数据类型
  14. 织梦手机版list.php,织梦一级目录作域名list.php无法跳转到手机站解决方法
  15. Eclipse中直接执行sql语句(图文说明)
  16. Linux内核源码的组织结构
  17. 国内外著名黑客杂志 《转》
  18. 只有程序猿才能看懂的段子,不笑你拿小拳拳捶我!!!
  19. unity-光照实时GI(Realtime GI)
  20. 小程序可通过这三种方式去做竞品分析

热门文章

  1. oracle12c密码登录失败,【译】解决Oracle12c Cloud Control登录验证出错问题
  2. vue 引入富文本编辑器(巨简单)
  3. Python之计算π值
  4. Android 实现浏览器打开app
  5. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑
  6. matlab输出的特征向量,关于matlab中的eig函数(求特征值和特征向量)(最新整理)
  7. 【牛客网专项练习题】
  8. 说透APP稳定性测试
  9. OCMJ8X15B金鹏液晶屏驱动程序+字库规律
  10. 常用荧光染料的激发和发射波长