【CTF整理】CTFhub技能树-Web-文件上传-.htaccess
CTFhub技能树里面的题最近作了一些,可是除了以前的SQL注入以外,其余的我实在没什么兴趣整理,毕竟网上的整理出来的博主不少,之因此专门整理这个文件上传.htaccess的题目,是由于我踩坑了,本觉得一道简单的题目我就这么硬生生的踩进去了,还差点没出来,浪费了很多金币啊。看别的博主都是上传.htaccess文件,上传修改后缀的一句话木马,菜刀或是蚁剑一连就getshell了,简单的不能再简单,为毛我试了N次都是不行?试了各类形式的.htaccess文件,各类报错。网上如此轻易用蚁剑连上的博主,我是不知道怎么作到的(多是我菜逼吧,不过网上好像就一两个版本,严重怀疑是最开始的那一篇带偏一堆人) 。吐槽结束,记坑。php
一、常规思路
修改.htaccess文件,上传指定后缀名的一句话,菜刀链接getshell。------ 失败html
基本上就这样
web
我试过的.htaccess内容:
版本1
SetHandler application/x-httpd-php
版本2
AddType application/x-httpd-php .jpg
配合PHP各类一句话文件后缀.jpg,
亲测,菜刀蚁剑没有一个能正常链接,要么200ok啥都不显示或者显示一句话,连不上,要么直接404,还有500的。
这种思路就是网上最流行的思路,想看的小伙伴能够看这里
https://www.cnblogs.com/anweilx/p/12523582.htmlshell
二、PHP passthru()函数
这个方法不须要菜刀,蚁剑什么,弱爆了,直接浏览器访问就看到了flag好吗,给想出这个方法的大佬点赞。
PHP的passthru()这个函数能够直接执行外部命令,用法passthru" ls "),一样有此功能的函数还有
exec()、system()、 shell_exec()等。浏览器
解法
这里先写一个.htaccess文件上传app
//sj随便写的,后面上传的文件没有后缀,就叫sj
SetHandler application/x-httpd-php
而后写sj文件内容以下:svg
#passthru("ls /var/www/html/"); //第一次只写这一行,用来找flag文件在哪里
passthru("cat /var/www/html/flag_229326633.php");//第二次是找到了flag文件以后,直接读取内容
?>
上传sj文件,而后浏览器直接访问文件:
这里啥都没有,须要查看源码。(小坑小坑)
获得flag函数
总结:
有时候不要太依赖菜刀蚁剑之类的工具,不必定要一句话,咱们还能够直接执行外部命令查看,PHP常见能够用来执行外部命令的函数有 passthru()、exec()、system()、 shell_exec()等。(不要太相信网上的解法,本身多动手尝试)工具
by 久违 2020.5.15 夜code