绕过 SQL 注入

Web安全攻防 学习笔记

一、绕过 SQL 注入


1.1、绕过去除注释符的 SQL 注入

        注释符用于标记某段代码的作用,起到对代码功能的说明作用,但是注释掉的内容不会被执行。

Mysql中的注释符:

  1. 单行注释: --+--空格#

  2. 多行注释: /* 多行注释内容 */

        对于正常的 SQL 语句中,注释符起到说明作用的功能。但是对于在利用 SQL 注入漏洞过程中,注释符起到闭合单引号、多单引号、双引号、单括号、多括号的功能。

        利用注释符过滤不能成功闭合单引号,换一种思路利用 or '1' = '1 闭合单引号。

	http://127.0.0.1/sqli/Less-23/?id=1' --+
	http://127.0.0.1/sqli/Less-23/?id=1' or '1' = '1

在这里插入图片描述
在这里插入图片描述


1.2、绕过剔除 and 和 or 的 SQL 注入

MySQL 基础知识补充:

  1. MySQL 中的大小写不敏感,大写与小写一样

  2. MySQL 中的十六进制与 URL 编码

  3. 符号和关键字替换 and → &&or → ||

sqlmap 探测

	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-25/?id=1" --dbs --batch



1.3、绕过去除空格的 SQL 注入

编码:hex,urlencode

  • 空格 URL编码:%20

  • TAB URL编码:%09

url 编码:https://www.w3school.com.cn/tags/html_ref_urlencode.html

sqlmap 探测

	# 有时候字符编码的问题, 可能导致数据丢失, 可以使用 hex 函数来避免
	
	$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-25/?id=1" --dbs --batch
发布了140 篇原创文章 · 获赞 1 · 访问量 5557

猜你喜欢

转载自blog.csdn.net/qq_43621629/article/details/104606053