WEB安全入门-SQL注入-基础(待补充)

WEB安全入门-SQL注入-基础(待补充)_第1张图片

简介

所谓sql注入,就是通过把sql命令插入web表单提交或者输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令

原理

针对SQL注入的攻击行为可描述为通过用户可控制参数中注入sql语法,破坏原有的sql结构,达到编写程序时意料之外结果的攻击行为。

其成因可以归结为一下两个原因叠加造成的:

1、程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造sql语句

2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到sql语句中。


注入危害

攻击者利用sql注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。在特别情况下,还可以修改数据库内容或者插入内容到达数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过sql注入漏洞直接获得wbeshell或者服务器的系统权限。

注入分类

1、根据数据类型:

● 数字型注入

字符型注入

区别:

字符型:需要单引号闭合的就是字符型注入,并且需要注释调后面的单引号(注释符号:#,--,/*)

数字型:不需要单引号闭合,也不需要注释符号

2、根据注入语法:

UNION query SQL injection(可联合查询注入)

●Stacked queries SQL injection (可多语句查询注入)

●Error-based blind SQL injection (布尔型注入)

● Error-based SQL injection(报错型注入)

●Time-based blind SQL injection (基于时间延迟注入)

SQL注入挖掘

and 1=1 和 and 1=2 回显页面不同(整形判断)

● 单引号判断 ' 显示数据库错误信息或者页面回显不同(整形,字符串类型判断)

● \ (转义符)

● -1/+1 回显下一个或上一个页面(整形判断)(需要用%2b转码+号)

● and sleep(5)(判断页面返回时间)


MySQL中常用函数

system_user()  系统用户名

● user()  数据库的用户名

● current_user()  当前数据库用户名

● session_user()  连接数据库的用户下

● database() 数据库名

● version() 数据库版本

● @@basedir 查看安装路径

● load_file('/etc/passwd')  读取本地文件的函数


MySQL中information_scheme库

  schemata 表 字段:schema_name (数据库名字)

● tables 表 字段:table_schema,table_name

● columns 表 字段:table_schema,table_name,column_name

你可能感兴趣的:(WEB安全入门-SQL注入-基础(待补充))