攻防世界新手web和misc
MISC
ext3
hint:今天是菜狗的生日,他收到了一个linux系统光盘
下载得到一个linux系统文件。拉进kali分析用file分析一下
没什么特别的东西。接着用strings搜索一下看看有没有料。
发现有一个flag.txt。那就挂载磁盘
打开得到flag.txt
1 | ZmxhZ3tzYWpiY2lienNrampjbmJoc2J2Y2pianN6Y3N6Ymt6an0= |
base64编译:
1 | flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj} |
SimpleRAR
下载得到一个rar压缩文件。打开里面只有一个flag.txt,里面就只有一句话“flag is not here”。用010打开压缩包,分析。
发现,按正常来说,这个压缩包不只有一个flag.txt,还应该有一张png图片。问题就出现在选中的这个7A(图中已修改)。我们要的是文件块而不是子块,于是更改7A为74,成功解压,发现是一张空白的图片,继续用010打开。发现是gif,用gifsplitter分离。得到两张图片
分别放到Stegsolve分析,
将两张二维码合并,并且补齐定位码就可以了。
PS:垃圾的我不会用ps,所以就用了Win自带的画图3D。截图两张然后用插入将两张合并在一起。
this_is_flag
flag{th1s_!s_a_d4m0_4la9}
打开PDF,右击,删除照片,就有flag
如来十三掌
word文档里面有一些看不懂的“佛家”字体。联想到 佛曰加密
记住要在前面加佛曰:
得到
1 | MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9 |
很像base64,解密不出任何东西。卡死了。。题目提到了十三掌。十三。。。。Rot13加解密
解密得到
1 | ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9 |
base64解密:
1 | flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab} |
give_you_flag
得到一个gif,发现闪过二维码。gifsplitter分离。
网上找定位符,补全即可。可以参考这个补全二维码
flag{e7d478cf6b915f50ab1277f78502a2c5}
stegano
hint:菜狗收到了图后很开心,玩起了pdf 提交格式为flag{xxx},解密字符需小写
全选之后,发现有异样
用浏览器打开看看什么情况。浏览器打开之后,全选,复制。放到sublime或者txt看看多出来的东西是什么。结果是这一串
1 | BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB |
凭经验来讲,应该是摩斯密码,把A当成”.”,B当成”-“
1 | -.-. --- -. --. .-. .- - ..- .-.. .- - .. --- -. ... --..-- ..-. .-.. .- --. ---... .---- -. ...- .---- ..... .---- -... .-.. ...-- -- ...-- ..... ..... ....- --. ...-- |
解密得到flag
flag{1nv151bl3m3554g3}
坚持60s
下载附件,jar文件。打开。。。。坚持60s。用010打开发现PK包。
改后缀名zip。解压打开。在文件PlaneGameFrame.class里发现flag
1 | flag{RGFqaURhbGlfSmlud2FuQ2hpamk=} |
base64解码
1 | flag{DajiDali_JinwanChiji} |
gif
hint:菜狗截获了一张菜鸡发给菜猫的动态图,却发现另有玄机
得到一个压缩包。解压缩,一共104张图片,不是白色就是黑色。二进制吧。。白色代表0,黑色代表1
人工统计也行,通过脚本也行。下面贴上脚本
1 | str = "" |
代码最后运用了python的切片技术,不会的可以参考这篇文章https://www.jianshu.com/p/15715d6f4dad
掀桌子
题目:菜狗截获了一份报文如下c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2,生气地掀翻了桌子(╯°□°)╯︵ ┻━┻
字符串由0-9,a-f组成。应该是改过的16进制。将字符串改成正规16进制
1 | string = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2" |
得到
1 | 0xc80xe90xac0xa00xc60xf20xe50xf30xe80xc40xef0xe70xa10xa00xd40xe80xe50xa00xe60xec0xe10xe70xa00xe90xf30xba0xa00xe80xea0xfa0xe30xf90xe40xea0xfa0xe20xea0xe40xe30xea0xeb0xfa0xeb0xe30xf50xe70xe90xf30xe40xe30xe80xea0xf90xea0xf30xe20xe40xe60xf2 |
发现都是大于128的。将他们减去128再转换成asc码
1 | string = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2" |
得到:
1 | Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr |
base64stego
hint:菜狗经过几天的学习,终于发现了如来十三掌最后一步的精髓
下载压缩包,解压得到一个stego.txt。里面全是看似base64字符。
解密得到
“Steganography is the art and science of writing hidden messages in such a way that no one”
意思就是隐写。查了一下原来有base64隐写。
基于python3的脚本:
1 | import base64 |
得到flag:flag{Base_sixty_four_point_five}
功夫再高也怕菜刀
hint:菜狗决定用菜刀和菜鸡决一死战
开局一个流量文件。
放到kali里面分析了一下,用foremost分离文件。得到一个压缩文件,里面有flag.txt,但是有密码。
怎么办呢???分析流量文件吧。定位一下这个flag.txt在哪
追踪一下TCP流。得到一大串东西
不要前面的base64,选中后面的一大串
一直到。。。。
导入010
发现是一张图片?
打开图片,是密码。打开解压密码拿flag
flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}
WEB
view_source
hint:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
F12,
robots
hint:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
根据提示,robots协议。
http://111.200.241.244:54060/robots.txt
cyberpeace{9db5e52553d7d956186b82dc3ed734ef}
backup
hint:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
得到文件
1 | <html> |
cookie
hint:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?
很明显就是要我们读cookie。抓包,拿cookie
叫我们找响应包。F12
disabled_button
hint:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
根据hint,不能按下去。应该就是编写前端的时候,将按钮的属性设置成不能按下去。
按F12看看
把这个disable=“”去掉
就可以按按钮了。得到flag
cyberpeace{a9b4375ddf6e32b058af096ee165c559}
weak_auth
hint:小宁写了一个登陆验证页面,随手就设了一个密码。
额。。。弱密码
admin 123456登录。拿flag
cyberpeace{d69afc0f1280190706831223a104daf5}
simple_php
hint:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
1 | |
简单的代码审计。
条件一:a=0且为真 =====>输出flag1
条件二:b为字符串
条件三:b>1234 ======>输出flag2
利用php弱类型比较。
1 | http://111.200.241.244:65199/?a=%220%22 |
得到一半flag
Cyberpeace{647E37C7627CC3E401
1 | http://111.200.241.244:65199/?a=%220%22&b=12345a |
得到完整flag
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
get_post
hint:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
http两种请求方法,get和post
1 | http://111.200.241.244:61319/?a=1 |
post要不抓包要不用hackbar
cyberpeace{f7a79b0997d3ef07b6738ac6216a9723}
xff_referer
hint:X老师告诉小宁其实xff和referer是可以伪造的。
XFF,是X-Forwarded-for的缩写,XFF注入是SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,从而得到网站的数据库内容。
运用条件:
1.Web业务运行正常
2.HTTP Header中存在X-Forwarded-for参数的调用
又有要求
以上操作全在hackbar完成
webshell
hint:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
直接蚁剑连接
打开蚁剑,右键添加数据
添加。
cyberpeace{4d613129df2a8ae85a812456f8aac72c}
command_execution
hint:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
命令注入漏洞。
1 | 127.0.01|ls |
发现会执行ls这条命令并且回显,所以可以先查找flag有关的文件。
1 | 127.0.0.1 && find / -name "flag*" |
直接读文件
1 | 127.0.0.1 && cat /home/flag.txt |
cyberpeace{52ce94350b58602299ec20da3755f8c7}
simple_js
hint:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
直接看源码
1 |
|
代码审计后,发现dechiffre函数里的变量是没被调用的。。也就是说无论怎样,pass都只会是”70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”然后经过一系列的转换,p最后都会为“FAUX PASSWORD HAHA”
dechiffre函数执行完成后,继续执行其它的代码
1 | h = window.prompt('Enter password'); |
之后alert弹出dechiffre(h)的值,由前面所有的代码可知,代码里p的值与tab无关,因为最终都会被tab2的值替代,所以我们无论输入什么,也就是pass_enc=h,无论输入的这个h等于什么,不管tab能否被分割成字符串数组,是否存在,都只会利用到tab2。通俗点讲,有关tab的参数与值都可以视为没有,因此,pass_enc参数是什么也就没有意义了
最后,结论就是,无论我们在弹框中输入什么值,都只会返回FAUX PASSWORD HAHA
说明这道题的flag不可能是靠输入正确密码来获取,因为根本就没有正确密码。
然后再看一眼源代码,明显感觉下面这串十六进制表示的ASCII码很可疑
1 | "\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30" |
首先看这串十六进制的ASCII码到底是什么,然后将这串数字序列传入到String.fromCharCode中,就可以看到FLAG了。
ps:本题需要一些js基础