2022强网杯复现
##2022强网杯复现
强网杯-强网先锋 rcefile学一点是一点,又是努力尝试不做fw的一天……
考点文件泄露、spl_autoload_register的可能性利用、文件上传、文件包含、反序列化
分析扫描目录存在www.zip,存在源码泄露,访问/www.zip下载源码查看源码中config.inc.php,发现对cookie做了反序列化,并存在spl_autoload_register()函数
关于spl_autoload_register函数
cookie的userfile就是上传文件加密过的文件名来构造序列化
步骤上传jpg⽂件,bp抓包,把jpg后缀改成.inc,上传文件内容为 然后发送,可以得到⽂件名为 axxxxxxxxxxxxxxxxxxxxxxxx.inc注意:生成的文件名需要字母开头(是bp里面得到的文件名)然后对文件名进行序列化,其中的axxxxxxx是文件名<?phpclass axxxxxxxxxxxxxxxxxxxxxxxx{function __construct(){}}$p = new axxxxxxxxxxxxxxxxxxxxxxxx( ...
MISC刷题(一)
MISC刷题(一)misc1题目给出一个txt文本和一张图片
首先看txt文本中的内容,每行固定三列,很多行,这里rgb值所以直接跑脚本rgb转图片
from PIL import Imageimport mathx = 800 #width #x坐标 通过对txt里的行数进行整数分解y = 800 #height #y坐标 x * y = 行数im = Image.new("RGB", (x, y)) #创建图片file = open('1.txt') #打开rbg值的文件#通过每个rgb点生成图片for i in range(0, x): for j in range(0, y): line = file.readline() #获取一行的rgb值 rgb = line.split(" ") #分离rgb,文本中逗号后面有空格 im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2]))) #将rgb转化为像素i ...
WEB刷题(一)
WEB刷题(一)[NPUCTF2020]ReadlezPHP
首先Ctrl+U查看源码发现==./time.php?source==
直接访问,得到源码
<?php#error_reporting(0);class HelloPhp{ public $a; public $b; public function __construct(){ $this->a = "Y-m-d h:i:s"; $this->b = "date"; } public function __destruct(){ $a = $this->a; $b = $this->b; echo $b($a); }}$c = new HelloPhp;if(isset($_GET['source'])){ highlight_file(__FILE__) ...
[WUSTCTF2020]朴实无华
[WUSTCTF2020]朴实无华题目
直接看题目,一上来就让我hack,这个要求多少有些让我难以拒绝。
步骤先F12查看一下源码
由标题猜测可能有robots.txt协议,猜测不到也可以通过dirsearch扫描后台,可以扫到一个robots.txt文件,访问即可得到一个fAke_flagggg.php的提示。
再次访问可以看到一个假的flag。
到这里我们使用bp抓包看一下。
再次得到提示, 继续访问
见劳如见旦,原来是旦总。Chrome浏览器显示乱码,用火狐浏览器打开,在查看中可以修复文字编码
<?phpheader('Content-type:text/html;charset=utf-8');error_reporting(0);highlight_file(__file__);//level 1if (isset($_GET['num'])){ $num = $_GET['num']; if(intval($num) < 2020 && intval($n ...
无参数RCE总结
无参数RCE一、什么是无参数RCE?顾名思义,就是只使用函数,且函数不能带有参数,这里有很多限制:比如我们选择的函数必须能接受其括号内函数的返回值;所使用函数的参数必须为空或者为参数
比如:a(b(c()));可以使用,但是a(‘b’)或者a(‘b’,’c’)这种含有参数的都不能使用
有些题目我们必须使用无参数的函数才能进行命令执行、任意文件读取、查看当前目录文件名等操作
举例:<?phphighlight_file(__FILE__);if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { eval($_GET['code']);}?>
关键代码preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])
这里使用preg_replace替换匹配到的字符为空 ...