安全矩阵

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

郑嘉源的学习日记

[复制链接]

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2021-11-22 23:28:06 | 显示全部楼层
本帖最后由 Grav1ty 于 2021-11-23 00:10 编辑

这几天事情有点多,快期末了结课作业堆在一起有点烦...

前天打了一下西湖论剑
乘着官方wp还没出来,同时防止某人不服气
记录学习过程

跌跌撞撞吧,中途因为没有灵感,甚至想放弃,最后在大佬的帮助下,还是侥幸写出来了两道题...
一道cr,一道re
其实也真的是,很奇怪,平时一直写的是web题,但真的打起来,web题反倒写不出多少。。。

1.密码人集合


看到这个截图的上面一部分啊,你就知道,结束之后和师傅们交流的时候问他们web3怎么写

他们全是用dirsearch扫

可为什么他们扫得出来我的p都扫不出啊??!!???全是响应200,0kb,有毛线用,关键我还扫了好几次
气死我了
.......
这道密码没啥,挺好联想的(起初还忘记了这个游戏(数独)叫啥,问了室友才想起来)

然后用个小脚本跑就行:
  1. s='217348569346591278598276134186935724725864139943721658891472653457613982362895417'
  2. s=s.replace('1','西')
  3. s=s.replace('1','西')
  4. s=s.replace('2','湖')
  5. s=s.replace('3','论')
  6. s=s.replace('4','剑')
  7. s=s.replace('5','我')
  8. s=s.replace('6','要')
  9. s=s.replace('7','拿')
  10. s=s.replace('8','第')
  11. s=s.replace('9','一')
  12. print(s)
复制代码


解释一下,先把数独放到在线的计算器网站跑,然后替换字符就好....这个脚本比较简陋/毕竟比赛时间有限,我肯定找最快的方法

2.逆向 ROR

先扫一遍

果然是分最少的题嗷

丢ida:关键信息放上

说实话,这是我第一次写逆向题

受益于两个月前看完了《有趣的二进制》,虽然那本书偏向pwn一点,但是对逆向理解和ida使用还是有那么一点帮助

很显然啊,追踪405000和405100,要实现使buf2等于405100的值
这里主要难点就是要逆向里面的两个for循环
当然也很显然,以我的水平没那实力
所以,我厚着脸皮去找大佬求救了2333...(感谢大佬不嫌弃)





..................
在大佬的帮助下,真的是摸爬滚打的,把这写出来了

  1. #include<iostream>

  2. using namespace std;

  3. int getIndex(char keyArray[], char ch) {
  4.     for (int i = 0; i < 256; i++) {
  5.         if (keyArray[i] == ch) {
  6.             return i;
  7.         }
  8.     }
  9.     return NULL;
  10. }

  11. int getBit(char ch, int index) {
  12.     int bit = ((ch >> index) & 0x1);
  13.     return bit;
  14. }

  15. void getChars(char encords[]) {
  16.     int decords[8] ;
  17.     char result[8] ;

  18.     for (int i = 0; i < 8; i++) {
  19.         decords[i] = 0;
  20.     }
  21.     for (int i = 0; i < 8; i++) {
  22.         decords[0] = (decords[0] << 1) | getBit(encords[i], 7);
  23.         decords[1] = (decords[1] << 1) | getBit(encords[i], 6);
  24.         decords[2] = (decords[2] << 1) | getBit(encords[i], 5);
  25.         decords[3] = (decords[3] << 1) | getBit(encords[i], 4);
  26.         decords[4] = (decords[4] << 1) | getBit(encords[i], 3);
  27.         decords[5] = (decords[5] << 1) | getBit(encords[i], 2);
  28.         decords[6] = (decords[6] << 1) | getBit(encords[i], 1);
  29.         decords[7] = (decords[7] << 1) | getBit(encords[i], 0);
  30.     }
  31.     for (int i = 0; i < 8; i++) {
  32.         result[i] = (char)decords[i];
  33.         cout<<result[i];
  34.     }
  35. }

  36. void main() {
  37.     char passwords[] = {
  38.                 (char)0x65, (char)0x55, (char)0x24, (char)0x36, (char)0x9D, (char)0x71, (char)0xB8, (char)0xC8, (char)0x65, (char)0xFB, (char)
  39.                 0x87, (char)0x7F, (char)0x9A, (char)0x9C, (char)0xB1, (char)0xDF, (char)0x65, (char)0x8F, (char)0x9D, (char)0x39, (char)
  40.                 0x8F, (char)0x11, (char)0xF6, (char)0x8E, (char)0x65, (char)0x42, (char)0xDA, (char)0xB4, (char)0x8C, (char)0x39, (char)
  41.                 0xFB, (char)0x99, (char)0x65, (char)0x48, (char)0x6A, (char)0xCA, (char)0x63, (char)0xE7, (char)0xA4, (char)0x79, (char)
  42.                 0xFF
  43.     };
  44.     char keyArray[] = { (char)0x65, (char)0x08, (char)0xF7, (char)0x12, (char)0xBC, (char)0xC3, (char)0xCF, (char)0xB8, (char)0x83, (char)0x7B, (char)0x02, (char)0xD5, (char)0x34, (char)0xBD, (char)0x9F, (char)0x33, (char)0x77, (char)0x76, (char)0xD4, (char)0xD7, (char)0xEB, (char)0x90, (char)0x89, (char)0x5E, (char)0x54, (char)0x01, (char)0x7D, (char)0xF4, (char)0x11, (char)0xFF, (char)0x99, (char)0x49, (char)0xAD, (char)0x57, (char)0x46, (char)0x67, (char)0x2A, (char)0x9D, (char)0x7F, (char)0xD2, (char)0xE1, (char)0x21, (char)0x8B, (char)0x1D, (char)0x5A, (char)0x91, (char)0x38, (char)0x94, (char)0xF9, (char)0x0C, (char)0x00, (char)0xCA, (char)0xE8, (char)0xCB, (char)0x5F, (char)0x19, (char)0xF6, (char)0xF0, (char)0x3C, (char)0xDE, (char)0xDA, (char)0xEA, (char)0x9C, (char)0x14, (char)0x75, (char)0xA4, (char)0x0D, (char)0x25, (char)0x58, (char)0xFC, (char)0x44, (char)0x86, (char)0x05, (char)0x6B, (char)0x43, (char)0x9A, (char)0x6D, (char)0xD1, (char)0x63, (char)0x98, (char)0x68, (char)0x2D, (char)0x52, (char)0x3D, (char)0xDD, (char)0x88, (char)0xD6, (char)0xD0, (char)0xA2, (char)0xED, (char)0xA5, (char)0x3B, (char)0x45, (char)0x3E, (char)0xF2, (char)0x22, (char)0x06, (char)0xF3, (char)0x1A, (char)0xA8, (char)0x09, (char)0xDC, (char)0x7C, (char)0x4B, (char)0x5C, (char)0x1E, (char)0xA1, (char)0xB0, (char)0x71, (char)0x04, (char)0xE2, (char)0x9B, (char)0xB7, (char)0x10, (char)0x4E, (char)0x16, (char)0x23, (char)0x82, (char)0x56, (char)0xD8, (char)0x61, (char)0xB4, (char)0x24, (char)0x7E, (char)0x87, (char)0xF8, (char)0x0A, (char)0x13, (char)0xE3, (char)0xE4, (char)0xE6, (char)0x1C, (char)0x35, (char)0x2C, (char)0xB1, (char)0xEC, (char)0x93, (char)0x66, (char)0x03, (char)0xA9, (char)0x95, (char)0xBB, (char)0xD3, (char)0x51, (char)0x39, (char)0xE7, (char)0xC9, (char)0xCE, (char)0x29, (char)0x72, (char)0x47, (char)0x6C, (char)0x70, (char)0x15, (char)0xDF, (char)0xD9, (char)0x17, (char)0x74, (char)0x3F, (char)0x62, (char)0xCD, (char)0x41, (char)0x07, (char)0x73, (char)0x53, (char)0x85, (char)0x31, (char)0x8A, (char)0x30, (char)0xAA, (char)0xAC, (char)0x2E, (char)0xA3, (char)0x50, (char)0x7A, (char)0xB5, (char)0x8E, (char)0x69, (char)0x1F, (char)0x6A, (char)0x97, (char)0x55, (char)0x3A, (char)0xB2, (char)0x59, (char)0xAB, (char)0xE0, (char)0x28, (char)0xC0, (char)0xB3, (char)0xBE, (char)0xCC, (char)0xC6, (char)0x2B, (char)0x5B, (char)0x92, (char)0xEE, (char)0x60, (char)0x20, (char)0x84, (char)0x4D, (char)0x0F, (char)0x26, (char)0x4A, (char)0x48, (char)0x0B, (char)0x36, (char)0x80, (char)0x5D, (char)0x6F, (char)0x4C, (char)0xB9, (char)0x81, (char)0x96, (char)0x32, (char)0xFD, (char)0x40, (char)0x8D, (char)0x27, (char)0xC1, (char)0x78, (char)0x4F, (char)0x79, (char)0xC8, (char)0x0E, (char)0x8C, (char)0xE5, (char)0x9E, (char)0xAE, (char)0xBF, (char)0xEF, (char)0x42, (char)0xC5, (char)0xAF, (char)0xA0, (char)0xC2, (char)0xFA, (char)0xC7, (char)0xB6, (char)0xDB, (char)0x18, (char)0xC4, (char)0xA6, (char)0xFE, (char)0xE9, (char)0xF5, (char)0x6E, (char)0x64, (char)0x2F, (char)0xF1, (char)0x1B, (char)0xFB, (char)0xBA, (char)0xA7, (char)0x37, (char)0x8F };
  45.     for (int i = 0; i < 41; i += 8) {
  46.         char encords[8];
  47.         for (int j = 0; j < 8; j++) {
  48.             encords[j] = (char)getIndex(keyArray, passwords[i + j]);
  49.         }
  50.         getChars(encords);
  51.     }
  52.         
  53. }
复制代码

233333用c++写逆向,也就只有我这个fw会这样做了...


本来昨天就想做这个记录,但是昨天一天被数据结构搞死了
晚上又被辅导员一堆p事情浪费了,就拖到今天

不过也好,今天看到IDLab放了他们的wp出来
真的是,跟着大佬学就是不一样啊

还顺便了解了一下z3模块(这玩意真好用)

回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2021-11-23 00:09:37 | 显示全部楼层
记录一下比赛的小插曲给以后我遇到困难又想躺平的时候看

之前不是说了,打到中午的时候,发现webweb做不来,除了个签到之外一点进展都没有。可我为什么下午的时候又重整旗鼓,去做题了呢

就是中午水群的时候看到各路大佬

(原谅我得码住..要不然被大佬知道了不带我玩了 )而且各位师傅该认识的都认识 没必要觉得码了是我故意

退一万步讲,他在吹牛p
但我看他们的博客,他们的文章和所在单位公司也是我可望不可及的高度

可就是这些人,我这种fw去问他们很“弱智”的问题,他们也是很热心很耐心的解答
而且他们有时候也是互相学习到凌晨一两点,没有任何的大佬架子

就这点事啊,那个中午我真的是很触动
为两点:
大佬一点都不“大佬”,为人为事,一定要学会什么叫做谦虚 低调一点总是好的
而且这次比赛的时候,看到全国的知名战队,0ops,Nu1L,凌武实验室,IDLab,湖南的船山,他们也是互相竞争互相拿一血
不得不感叹人外有人天外有天,学会谦虚总是好的。

学习遇到点挫折,不要轻易躺平
逼着自己去学点有难度的东西,比如这次比赛第一次写re,第一次感受逆向的这种过程。不也被我啃下来了嘛
再说了,总是学简单的,水平咋提升,Hacker是什么?hacker不就是敢于做没人做过的事情的人嘛

写到这里,想总结一下,就突然想起了乔布斯说的那句:
Stay hungry,Stay foolish


...............................
上上个月,看完了那本《有趣的二进制》
然后两个月里面断断续续的把里面的细节又看了几遍,并尝试去复现了一下
虽然有些没有复现成功,而且贼烧脑,看了掉头发
不过还是觉得这个有意思,web什么的太没劲了哈哈哈(拿shell除外)
回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2021-11-25 00:52:15 | 显示全部楼层


好玩。。
回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2021-12-30 12:27:30 | 显示全部楼层
昨天听说南大的静态分析16课全公开了,真是喜大普奔,除了感谢还是感谢
自上次公开前6课,后面部分真超想听,主要是想看看南大的学生都有哪些要求,见贤思齐哈哈哈
https://pascal-group.bitbucket.io/teaching.html

等期末完了找个时间把所有视频都备份下来。
回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-6 23:59:02 | 显示全部楼层


这玩意玩起来挺有意思的,能学到很多东西
回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-11 16:27:45 | 显示全部楼层

DC-2靶机 writeup

nmap扫一下:

设置一下本地dns 然后访问80端口

查看一下flag


提示用cewl生成密码

然后用wpscan扫一下用户名

跑字典:

  1. wpscan --url [地址] -U [用户名字典] -P [密码字典]
复制代码

然后扫一下后台并尝试登录

不过没啥用,没找到能打进去的地方

尝试ssh登录吧

用不用hydra都行,之前跑出来的就是账号密码

直接登录

??cat用不了

发现是rbash

那就得绕过去,可以参考两个文章:

https://blog.csdn.net/weixin_43705814/article/details/111879362

https://www.freebuf.com/articles/system/188989.html

绕过之后提示登录jerry账号

登进去后发现没有权限,查看一下权限有进一步的提示:


用git提权:

https://blog.csdn.net/G_Fu_Q/article/details/116276096

结束



回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-11 18:28:33 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-1-11 18:31 编辑


DC-4 Write UP




常规nmap扫,忘了截图..直接访问80就好了



爆破,密码是happy



是一个命令执行界面




抓包,这个都是可以改的


不过讲道理,现在哪个网站还会做直接执行命令的功能的网页啊



既然可以直接改,而且没有限制,那就直接弹shell了


不会用nc,写一个webshell然后再用工具也行,麻烦点就是了



连上后是一个低权限用户



逛了好一会儿,还在纳闷这一个怎么没有提示啊


在home目录下发现一些账户






找到密码备份文件,创建用户名和密码字典文件。直接跑ssh


  1. hydra -L user.txt -P oldpasswd.txt ssh://192.168.163.223 -vV -o hydra.ssh
复制代码


密码是jibril04,连上去


居然也没有flag提示...浪费了好多时间




sudo的权限也没有



思考了一会儿,登入jim账号的目录下两个文件都是邮件,所以有没有可能这是提示呢?


尝试

  1. find / -name mail
复制代码


果然在mail目录下有收获:



又是邮件,不过给了密码哈哈


这么多英文看的我真是头疼


然后就直接登入这个charles:



提示sudo要用teehee:


看一下这玩意有些啥作用:



看不懂,翻译一下:



写入文件?

那就直接加个用户呗...


得益于之前配过arch哈哈,比较熟徐了

加个grav1ty用户:



完事儿了






回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-14 17:36:08 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-1-14 17:37 编辑

DC-5 Write UP



常规nmap



访问:



没啥看的,就这里有个contact有交互



然而交互也没什么用,后来发现这个玩意居然会变:




但是会变也没啥用感觉,不知道怎么利用

后来尝试去扫目录也没发现有什么有问题的地方



没辙就去看了一波攻略..


擦,原来这里是文件包含..

讲道理,我想不到

是我太年轻了吗?



尝试一下:



但是文件包含也没用啊,不能写木马上去...

然后我又去看攻略,喔,又学到了:


ngnix日志会记录所有的请求,可以利用这个点写shell



连上蚁剑



直接反弹一个nc到kali上




还是那个低权限的用户,需要提权


但是尝试了一些,都没用

本来想自己摸索,不看攻略的,还是不行

所以后面还是照着网上的方法写了,就当是复现吧(其实后来想想,也许当时做这个靶场的人就是给了一个什么都不能干的用户,然后刻意给一个漏洞,只让从这里入手呢)


查找有超级权限的命令:



发现screen,在kali上找poc



查看txt写了啥



没啥用,我试了试直接把.sh传到靶机上执行,发现也不行



然后我就去看了一下这个.sh是啥


喔,这里都写明白了,要编译一些文件



后面就不难了,照着这个.sh里面说的做就行


最后的得到三个文件:




给权限然后执行就好:



结束





回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-15 15:57:27 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-1-16 23:26 编辑

DC-6 Write UP



nmap:



访问(和之前一样,记得改本地dns):



和之前那个dc-2一样?那就照着dc-2的思路先来,扫用户,用cewl造字典:



结果发现cewl的字典跑不出来:



原来这玩意官网还有提示:




那就简单了,照着这个字典跑就行



跑到结果:



登录后台:



看了一下网上的师傅,都是用插件的漏洞,kali里面有poc的

本来也想照着网上的大师傅们一样做

但是发现后面太复杂了,还要改脚本什么的


其实不用那些,可以直接这样做:



抓包:



就可以直接拿shell了:



查看一下权限,这都写的是个啥..?



翻译一下。。。



啥东西,没用。

后来乱逛找到了这个:



看不懂...还是得靠翻译:




这都写的是个啥?

我还以为每个用户都有任务要做...结果翻了两个用户目录里面啥有用的都没有...

擦。。。后来反应过来他这不会给的是账号和密码吧...


试了一下...果然



然后查看sudo权限:



可以调用backups.sh,这东西瞅着眼熟

之前乱逛的时候看到过:



这玩意该怎么用其实都给你写好了,把注释和下面一行代码删了就行

...

我还是太年轻,以为这就提权结束,结果就闹了下面这个笑话:



没仔细看用户名,不是root

是jens,所以只能换成jens执行




果然还没结束



用nmap提权?

又有新知识可以学了:

nmap提权方式:

https://blog.csdn.net/zijiaijd/article/details/117165224



为什么会失败?

当然是因为,这个博主出错了..


/bin/bash那里不能是双引号..


至于最后得到的交互界面为什么没有回显,我也不知道







回复

使用道具 举报

180

主题

231

帖子

1176

积分

金牌会员

Rank: 6Rank: 6

积分
1176
 楼主| 发表于 2022-1-15 16:12:18 | 显示全部楼层
dc3好像有问题,一直部署不成功,就跳过了
回复

使用道具 举报

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

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 03:23 , Processed in 0.018644 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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