CTF靶场系列-De-ICE:_S1.130 – 作者:陌度

下载地址

http://hackingdojo.com/downloads/iso/De-ICE_S1.130.iso

实战演练

原文再续,书接上文s1.100的系统

任务信息

寻找用户信息

信息收集

netdiscover发现IP是192.168.1.20

image.pngimage.pngFTP没有信息

image.pngweb的话找到一个用户名,试试用来爆破一下ssh

image.png我尝试爆破这个账号的ssh密码,发现爆破不了

telnet smtp服务器看看,其实找到用户名可以根据社会工程学去分析密码

邮箱:[email protected] 手机号:1-337-133-7133
那么我们可以将这个拆分为
customer
service 
admin
c
s
administrator
然后将这些组合在一起,就找到了一个用户csadmin

image.png爆破cadmin这个账号成功

image.png使用这个账号进行登录

image.png很多账号,csadmin只是普通的账号,我们看看还有没有东西

找到一个加密文件,但是加密失败

image.png邮件

image.png从邮件我们可以注意到几个点,儿子的名字叫”Donovin“,邮件发送的时间,儿子的出生时间2010-12=1998,可以推测大概的密码字典

Donovin
donovin
2010
1998
12
Donovindonovin
Donovin2010
Donovin1998
Donovin12
donovindonovin
donovin2010
donovin1998
donovin12
2010donovin
1998donovin
12donovin
donovin201012
donovin20101998
donovin122010
donovin199812

爆破一下

image.png登录

image.png继续找信息

image.png猜测dbadmin的密码是databaser,但是不行

image.png但是按照上面那个思路,他的密码都是字母+数字,我们试一下加上数字

image.png爆破

image.png还是权限不够,继续找信息

image.png邮件

image.png在这封邮件里面我们看到内容加密了,使用string命令

image.png还记得我们用过三个账号不断发现邮件吗?他们有三个部分,现在将他们三个部分组合在一起看看会有什么东西

dbadmin

image.pngcsadmin

image.pngsdadmin

image.png将这些代码组合在一起

public class Decoder {
 // PART 1
 
 int[] processLoop(String input){ 
  int strL=input.length();
  int lChar=(int)input.charAt(strL-1); 
  int fChar=(int)input.charAt(0); 
  int[] encArr = new int[strL+2]; 
  for(int i=1;i < strL+1;i++){ 
   encArr[i]=(int)input.charAt(i-1);} 
  encArr[0]=(int)lChar; 
  encArr[encArr.length-1]=(int)fChar; 
  encArr=backLoop(encArr); 
  encArr=loopBack(encArr); 
  encArr=loopProcess(encArr); 
  int j=encArr.length-1; 
  for(int i=0;i < encArr.length;i++){ 
   if(i==j) break;
   int t=encArr[i]; 
   encArr[i]=encArr[j]; 
   encArr[j]=t;j--;}
  return encArr;} 
 
 /*
  * Note the pseudocode will be implemented with the  
  * root account and my account, we still need to implement it with the csadmin, sdadmin, 
  * and dbadmin accounts though
  */
 
 // PART 2
 int[] backLoop(int[] input){ 
  int ref=input.length;
  int a=input[1]; int b=input[ref-1]; 
  int check=(a+b)/2; 
  for(int i=0;i < ref;i++){ 
   if(i%2==0) input[i]=(input[i]%check)+(ref+i); 
   else input[i]=(input[i]+ref+i);}
  return input;} 
 int[] loopProcess(int[] input){  
  for(int i=0;i < input.length;i++){ 
   if(input[i]==40||input[i]==41) input[i]+=input.length; 
   else if(input[i]==45) input[i]+=20+i;} 
  return input;} 
 
 
 // PART 3
 int[] loopBack(int[] input){ 
  int ref=input.length/2; 
  int[] encNew =new int[input.length+ref]; 
  int ch=0; 
  for(int i=(ref/2);i < input.length;i++){ 
   encNew[i]=input[ch]; ch++;} 
  for(int i=0;i < encNew.length;i++){ 
   if(encNew[i]<=33) encNew[i]=33+(++ref*2); 
   else if(encNew[i] >= 126) encNew[i]=126-(--ref*2); 
   else{ 
    if(i%2==0) encNew[i]-=(i%3); 
    else encNew[i]+=(i%2);}} 
  return encNew;}
 
 
 public static void main(String[] args) {
  Decoder d = new Decoder();
  int[] c = d.processLoop(args[0]); 
  for (int i = 0; i < c.length; i++)
   System.out.print((char)c[i]); 
 }
}

解密到root密码

image.png登录到root账号,获取信息

image.png

来源:freebuf.com 2019-03-01 12:56:42 by: 陌度

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论