攻防世界web

2023-11-01

攻防世界web

前言

准备ctf比赛,这里把攻防世界分值低于5分的基本刷了一遍(分值再高刷不动了…)

练习

  1. view_source
    1
    没难度知识禁用了右键点击,ctrl+u查看源码拿到flag

  2. get_post

    这题没什么好说的,按着提示来就能拿flag
    2
    但我发现下面的hackbar不能用后用burp来进行post传参不返回flag…迷了我很久…

    结果我下了左边那个hackbar后重来一遍,结果就返回flag了,很迷,我burp肯定没用错啊…

  3. robots

    这道题也没什么好说的啊,考一个robots协议的理解(就是在玩爬虫时我们从来没有理会的一个协议…),这里查看robots协议,看到flag的php访问拿到flag
    3

  4. backup

    这道题还是有点意思,考查一个备份文件,因为前面刚看了源码泄露方面的东西,结果这里一来就直接想到了vim的文件备份结果试~,没有…这时候一看人家也没提示说vim,正常的备份一般是加,.bak(比较常见的方法,当然手动备份也可以自己来取名,但程序员我感觉还是会偏向于统一)然后访问就可以下载到备份文件,查看文件拿到flag
    4
    参考:备份文件:被低估的Web威胁

  5. cookie

    这道题也没什么说的,访问网页检查元素查看cookie,看到cookie.php,然后直接访问

    看到提示说查看response,响应头就藏着flag

    5

  6. disabled button

    这道题也没什么意思,有个按钮,查看源码可以发现是个input输入框,那直接post发送数据过去就得到flag了
    6

  7. simple js

    从题目就可以看出是一道javascript题

    访问页面,查看源码,可以看到js代码
    7
    分析得到下面的16进制的字符就是flag内容…(js确实有待学习加强,这里看了好久…)

  8. xff referer

    这道题也是比较初级的

    我是用两个插件解决的

    第一个它要求ip是123.123.123.123,我用的是X-Forwarded-For Header,

    第二个要求是来自 www.google.com 这个用hackbar添加的Referer

    当然直接抓包添加

    X-Forwarded-For: 123.123.123.123
    Referer: www.google.com

    这两个参数也行
    8

  9. weak auth

    这道题是个弱密码题,随便尝试登录,会告诉你用admin来登录

    然后查看源码会提示你需要一个字典,这就很容易想到暴力破解了吧

    这里用burp来尝试暴力破解
    9
    可以看到密码是123456的时候返回长度与别的都不一样,尝试用admin,123456来登录,登录成功获得flag

  10. webshell

    这道题考查菜刀的使用,用过的话就没什么难度

    题目描述中提示了一句话木马是index.php,访问网页看到一句话是<?php @eval($_POST[‘shell’]);?> ,得到’密码‘是shell,菜刀连接,文件管理就可以看到flag了
    10

  11. command execution

    刷过dvwa应该都知道这个漏洞,这也和dvwa的low级别没什么差别

    这里先127.0.0.1 & find / -name “flag.*” 来查找flag文件的位置(找不到的话可以试下找flag文件)

    然后看下图可以发现找到了
    11

    然后cat 文件得到flag

  12. simple php

    代码审计,这个代码还是比较简单易懂的
    12
    这里看代码就能明白,这里考的是php的==和===

    eg : $a = ‘123’; $b = 123;

    ​ $a === $b为假; $a == $b为真;

  13. ics-06

    这道题拿到的时候也没有什么好的思路,主页面点击没什么反应,查看代码后发现点击报表中心会跳转到index.php。跳转后可以看到Get传了一个id值,我这里以为是sql注入,结果没注出来。后面发现,这里是要暴力破解,id等于2333的时候出结果2333
    13

  14. Training-Get_Resourced

    这道题直接在描述里提示了看注释就是看页面源码,进入页面也有一行比较淡的字提示看源码,打开源码就能直接得到flag,没什么意思…
    14

  15. Training-WWW-Robots

    还是考查robots协议啊,访问robots.txt那里不让访问就去访问那里,就得到flag
    15

  16. NaNNaNNaNNaN-Batman

    这道题对我还是挺难的,因为不怎么会(不会)js…

    题目是给了个附件,以为是代码审计,也确实是代码审计,不过里面是乱码,但不全是乱码,能看出<script>,<eval>这些标签,很显然是个html文件,大概也能看出,前面是个函数,然后eval去执行,这里是把eval改为alert弹出非乱码形式的源码
    16
    分析其实可以直接运行里面的代码拿到flag,而不用去构造前面的匹配
    17
    然后可以看到直接出flag了

  17. NewsCenter

    这道题进去的时候也是比较懵,但看了下源码也就search那里可以操作,这种搜索框很容易想到sql注入,输入1查询正常,输入1’查询崩溃。OK存在注入,然后按照注入步骤来,整体很简单,dvwa low级别的难度吧手工很好注出来,sqlmap也能很好注出来
    18

  18. lottery

    这道题有点难了…(菜鸡的无助)

    这道题很显然是让我们去输入7个数字然后与答案匹配获得金币,然后购买flag

    抓包,发现cookie有提示说看cookie.php,但并不能访问

    然后我想能不能改个PHPSESSID来改换账户购买,但md5试了下破解不了,而且我们也不知道有别的账号
    19
    陷入僵局…

    然后我看了下别人的提示说看下robots.txt

    OK看到里面的提示就很熟悉了,最近刚好看了源码泄露的一些资料,还正好想试下GitHack这个工具…
    20
    使用githack工具
    21
    我们成功下回了源码,通过burp前面的代理我们可以看历史,发现我们buy的时候会访问api.php

    这时候就是代码审计了
    22
    可以看到buy的代码片段,这里又考查的是==这个知识点

    抓包可以看到是惊悚格式数据,然后$number也没有检查数据类型
    23
    OK,像上面那样改包就能成功赢的金币,然后就能购买flag了

  19. upload

    这道题我也很无语,很简单的文件上传漏洞用burp抓包或者禁js都能上传成功,上传的phpinfo也能访问成功,但我一句话就是连不上…我看别人的博客都是一句话能连上,很无语,最后上传了一个大马直接访问猜拿到flag…现在还是没懂为什么一句话没连上…
    24

  20. mfw

    这道题还是挺绕的

    首先是查看源码,看到注释里面有?page=flag
    25
    结果并没有返回

    然后再翻看网页,看到提示说他用到了git想到源码泄露,githack用起来
    26
    很开心看到下载到了flag.php,结果打开是空的,真的只是模板

    里面有用的就是index.php了,这时候就变成代码审计了
    27
    这里有个assert函数,这个一句话中也有用这个函数的

    如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。跟eval()类似, 不过eval( a s s e r t i o n ) 只 是 执 行 符 合 p h p 编 码 规 范 的 assertion)只是执行符合php编码规范的 assertion)phpcode_str。

    所以我们要利用这一点来执行我们的命令

    这里我感觉和注入是差不多的,因为没有过滤,所以我们可以注入些我们想要执行的东西

    assert(“strpos(’$file’, ‘…’) === false”) or die(“Detected hacking attempt!”);

    有两句assert,我们拿上一句来进行注入,首先我们随便构造一个文件名来闭合strpos,x’),然后

    我们有or来拼接我们要执行的语句,因为前面随便构造的文件所以会为false,我们后面的命会执行,or system("cat templates/flag.php "); //并注释掉后面的

    page=x’) or system(“cat templates/flag.php”);//

    这里自己php水平太菜所以看得别然人的,我总感觉上面assert没有闭合呢…但问题是上面的语句能正常运行,我想的反而不太对…php不愧是世界上最好的语言好难懂

    assert("strpos(’$filex’) or system(“cat templates/flag.php”);// 怎么看都不像闭合了呢

    然后查看源码就能看到flag了
    28
    这题考查的就相对绕了一些不像前面的题只考一个知识点那样了。

  21. FlatScience

    这个有点难了对于我这样的菜鸡来说

    首先登陆网站后发现有很多pdf就没什么收获了

    这时候查看robots.txt(主要看有没有提示什么后台登陆吧,现实中在robots里添加后台登陆也是比较常见的)或者用网站路径扫描器来扫描也是没问题的
    29
    这时候登login.php可以看到是个登陆界面,admin.php也是一个登陆界面

    看源码可以看到login.php中有提示
    30
    按照提示我们加?debug去访问,然后发现有源码,进入代码审计
    31
    可以看到有数据库查询语句,很明显存在注入(因为没有过滤),但这里的难点在于用的是sqlite这个数据库,虽说sql注入原理都一样,但实现细节还是不一样的…

    注入手法一样,先order by看字段数,这里注释符号用 –

    3的时候报错所以有两个字段
    32
    源码分析可以看到setcookie,这还是一个比较简单的sql注入,有返回值

    usr=’ union select name,sql from sqlite_master–
    33
    可以看到有user表,我们关心的name,password和hint(因为代码审计可以看到密码存储sha1的方式,所以肯定还需要提示来破解)

    ’ union select group_concat(name),group_concat(name) from Users –
    34
    ’ union select group_concat(password),group_concat(password) from Users –
    35
    ’ union select group_concat(hint),group_concat(hint) from Users –
    36
    这里我是看到最后的hansi用户它的提示是password is password然后尝试登陆,不行登不上…

    其次有用的提示就是admin了,他最喜欢的paper中最喜欢的词…这个就很像啊,因为前面给了那么多的pdf…

    我看了下后面的思路,主要是先爬取下来所有的pdf,写py脚本将pdf转为文本文件(主要用到pdfminer模块),然后再每篇文章一个词一个词的提取出来进行sha1计算(按照代码中的加盐),和我们sql注入出来的sha值比较一样的就停止得到密码

    然后再admin.php界面登录得到flag

    这里贴一下别人的py代码吧

    from cStringIO import StringIO
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import TextConverter
    from pdfminer.layout import LAParams
    from pdfminer.pdfpage import PDFPage
    import sys
    import string
    import os
    import hashlib
     
    def get_pdf():
    	return [i for i in os.listdir("./") if i.endswith("pdf")]
     
     
    def convert_pdf_2_text(path):
        rsrcmgr = PDFResourceManager()
        retstr = StringIO()
        device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        with open(path, 'rb') as fp:
            for page in PDFPage.get_pages(fp, set()):
                interpreter.process_page(page)
            text = retstr.getvalue()
        device.close()
        retstr.close()
        return text
     
     
    def find_password():
    	pdf_path = get_pdf()
    	for i in pdf_path:
    		print "Searching word in " + i
    		pdf_text = convert_pdf_2_text(i).split(" ")
    		for word in pdf_text:
    			sha1_password = hashlib.sha1(word+"Salz!").hexdigest()
    			if sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c':
    				print "Find the password :" + word
    				exit()
     
    if __name__ == "__main__":
    	find_password()
    
  22. upload

    使用了我所知的一切方法进行上传,burp,文件截断…但完全不行,后台对文件进行校验,也没文件包含漏洞,卡主,毫无头绪…

    后面看writeup说这是一道注入题…

    这是一道insert注入题,insert注入听过,但没练习过…但原理我觉得就是插入数据的时候有些值插入成database()这种,后面显示的时候就会显示出数据库名。这里我们上传文件后会显示下图的信息
    37
    后面会重定向到初始页面显示上传过的文件名

    这里有了查询操作所以存在了二次注入的可能

    这里的注入也特别麻烦,有很多过滤规则…

    参考

    2015年rctf web150 (Update set 二次注入)

    RCTF2015+XCTF复现之一次上传的图片的文件名造成注入

    但注入出来的结果我提交为什么不对了…(好吧不要按它说的格式来,直接交才正确…)

  23. php2

    页面就没什么信息,先查看robots.txt没有,再查看常用的几个界面,admin.php,login.php,index.php都没有…

    路径扫描吧,扫出来会发现有index.phps(我是没扫出来,看了别人的字典添加后扫出来…)

    访问,可以看到有部分代码片段,查看源码,能看到详细代码,变为代码审计
    38
    这里就是要我们构造一个合适的id就能得到flag,可以看到需要的id进行urldecode后要等于admin,这就是二次编码,因为服务器接受到数据后会进行一次url解码,然后代码又解一次

    二次编码,可以自行百度下,我看别人都是用御剑来做的,这里admin比较短查表也方便吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

攻防世界web 的相关文章

  • 虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问

    一 虚拟机环境搭建 1 安装docker git docker compose ubuntu sudo apt get update 更新系统 sudo apt get y install docker io 安装docker sudo a
  • 一些文件头

    由这些文件头即使文件后缀被乱改也可以通过查看二进制文件查出文件的匹配格式 当然这就是一些播放器识别文件的方法 1 从Ultra edit 32中提取出来的 JPEG jpg 文件头 FFD8FF PNG png 文件头 89504E47 G
  • ctfshow 文件包含

    目录 web78 web79 web80 81 web82 web83 web78 简单的伪协议文件包含 payload php filter convert base64 encode resource flag php web79 pa
  • CTFhub技能树_Web RCE

    一 eval执行 1 分析 打开网站显示如下代码 大体意思是 判断cmd是否被设置 若cmd被赋值 则执行如下语句 否则就继续显示以上代码 eval REQUEST cmd 其中 eval 该函数可以把字符串作为PHP代码执行 REQUES
  • 第十五届全国大学生信息安全竞赛(ciscn初赛) 部分writeup

    杂项的附件地址 https share weiyun com BZyngGSZ CISCN web Ezpop misc everlasting night ez usb 问卷调查 pwn login nomal crypto 签到电台 基
  • buuctf [强网杯 2019]随便注 1

    buuctf web 强网杯 2019 随便注 1 刷题个人日记 小白一个 写给自己看 打开后是这样 从题目和内容来看就是一道sql注入题 输入 1 or 1 1 这个 用来注释掉后面的sql语句 显示所有数据 这个数据有什么用我也不知道
  • ctfshow web2

    ctfshow web2 writeup 这是本人第一次写blog 有不好的地方希望大家多多指出 从此开始踏上了网安的不归路 成为了一只web狗 从题目可以看出这是一道sql注入的题 示例 pandas 是基于NumPy 的一种工具 该工具
  • 攻防世界Web题 - unseping 总结

    攻防世界Web题 unseping 总结 1 审题 进入题目 可以看出来是典型的php反序列化题目 2 源代码分析
  • 懂的都懂,那些好用的“WEB安全”网站

    加密解密 解码编码 MD5 https www cmd5 com 凯撒 https www qqxiuzi cn bianma kaisamima php 摩斯密码 https www jb51 net tools morse htm ht
  • adworld-web2

    web2 GFSJ0627积分 2金币 2 91最佳Writeup由 Robert Wei 提供 收藏 反馈 难度 2 方向 Web 题解数 108 解出人数 10185 题目来源 CTF 题目描述 解密 题目场景 http 61 147
  • CTF-----RE练习题(二)

    学习打卡篇八 每天学习一点点 认识壳 在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序 它们一般都是先于程序运行 拿到控制权 然后完成它们保护软件的任务 由于这段程序和自然界的壳在功能上有很多相同的地方 所以就把这样的程序
  • XCTF攻防世界Web12道简单题

    0x00 准备 内容 在xctf官网注册账号 即可食用 目录 目录 0x01 view source2 0x02 get post3 0x03 robots4 0x04 backup6 0x05 Cookie7 0x06 disabled
  • CTF BugKu平台——Crypto篇刷题记录(后续更新)

    CTF BugKu平台 Crypto篇 前言 抄错的字符 聪明的小羊 ok lt gt 把猪困在猪圈里 你喜欢下棋吗 小山丘的秘密 EN 气泡 你以为是md5吗 Math English easy crypto 黄道十二官 一段新闻 7 1
  • [BDSec CTF 2022] 部分WP

    组队参加了个国外的小线上赛 题目比较简单 目录 PWN pwnrace Reverse BDSec License Checker 0x1 shashdot Flag Box Simple Math Poster BDSec License
  • CTF图片隐写题

    1 隐藏在图片属性里的信息或者以文本形式打开能直接获取的信息 例如实验吧里的一道题 这个背影我给满分 就是将信息隐藏在属性里 又或者文本形式能直接看到的 分别是黑客榜中榜游戏和南邮平台的两道题
  • CTFShow-WEB入门篇--信息搜集详细Wp

    CTFShow WEB入门篇详细Wp 信息收集 web1 web2 web3 web4 web5 web6 web7 web8 web9 web10 web11 web12 web13 web14 web15 web16 web17 web
  • GET报错注入(Sqli-labs第一题详解)

    文章目录 一 找注入点 二 order by判断列数 三 union联合注入 判断数据显示点 四 爆库 爆表 一 找注入点 单引号注入题目 在参数后面加一个单引号 id 1 数据库报错 单引号匹配出错 即添加的单引号成功被数据库解析 可以通
  • ctfshow web7

    文章目录 题目分析 解题过程 题目分析 打开题目后 有三个文章 随便点一个之后发现网址上有个后缀 id 2 应该是get传参的注入了 在后缀上加 id 1 1 显示全部文章 可能是整形注入 还是盲注 他这个过滤了空格 用 代替 详见web6
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup

    前言 由于懒我直接把上交的wp稍加修改拉上来了 凑活看 文章目录 前言 Pwn test nc nc shell Reverse Creakme EasyRe
  • 通过 url 将整数传递给 php $_GET

    所以我正在做一些 CTF 挑战之一是关于 php 类型杂耍 代码看起来像这样 if GET var1 hash md4 GET var1 print flag 所以我 80 确定我需要传入一个整数 这样它就会是真的 但我能操作的只是 url

随机推荐

  • ubuntu彻底卸载ffmpeg 与安装

    卸载 卸载旧的FFmpeg 输入以下指令 sudo apt get purge remove ffmpeg sudo apt get purge autoremove 当时试了一下 并没有成功 命令行输入 ffmpeg version 当时
  • 计算机视觉与深度学习-经典网络解析-GoogLeNet-[北邮鲁鹏]

    这里写目录标题 GoogLeNet 参考 GoogLeNet模型结构 创新点 Inception结构 它能保留输入信号中的更多特征信息 去掉了AlexNet的前两个全连接层 并采用了平均池化 引入了辅助分类器 GoogLeNet GoogL
  • 从Cookie 中取出来对特殊字符的转换

    页面存入Cookie中的值含有特殊字符 但所传的值中包含一些特殊字符比如 Cookie中是无法对特殊字符直接承载的 所以在存入Cookie时 将其转换为unicode编码 document cookie key escape value 但
  • Vue性能优化

    一 Object freeze 如果我们已知该数据是不会改变的 就不需要Vue将其设置成响应式的了 利用 Object freeze 该方法可以冻结一个对象 使该对象不能被修改 Vue就不能够为对象添加 setter getter等数据劫持
  • char str[]与char *str的区别

    在C语言中 对字符串的操作主要有两种方式 一是使用字符数组 char str 二是使用字符指针 那么二者有什么区别呢 下面将分述二者的使用 最后进行比较 一 字符数组 使用char str 定义一个字符数组str 中括号内可以写上数字表示数
  • JavaScript实现select下拉菜单省份和城市的级联菜单

    使用JavaScript中变量定义省份及对应的城市 应用select标签对象 实现二级级联的下拉菜单选中效果 即在省份下拉菜单中选中一个省份时 在城市下拉菜单中出现该省份对应的城市 HTML代码 div class choosecity p
  • 解决高德地图label添加的点击事件在移动端无效

    解决高德地图label添加的点击事件在移动端无效 近日工作中需要用到高德地图在PC端和移动端同时适配的需求 在PC端撸代码和调试一切顺利 但是在将项目在平板中测试时 发现绑定在label中的click事件无法触发 通过各种调试发现应该是高德
  • 10 KVM虚拟机配置-虚拟CPU和虚拟内存

    文章目录 10 KVM虚拟机配置 虚拟CPU和虚拟内存 10 1 概述 10 2 元素介绍 10 3 配置示例 10 KVM虚拟机配置 虚拟CPU和虚拟内存 10 1 概述 本节介绍虚拟CPU和虚拟内存的常用配置 10 2 元素介绍 vcp
  • 程序员工作上的闹心事 职场经验 正经的人生经验

    工作一直进展的很好 有些小瑕疵也整体影响不大 可是今天踩大坑了 我同时在做两个业务线的两个项目 A项目和B项目穿插进行 两位产品经理都达成了共识 A项目是主要的 只要有A项目的工作就先做 B项目在A做完之后再做 前几天A项目有了新需求开始开
  • 树莓派远程连接的三种方式总结

    总结远程连接树莓派的三种方式 对大部分linux系统同样适用 首先需要将树莓派连接上网 ifconfig记录ip地址 第一种 ssh远程连接 在linux下使用 ssh root 10 107 16 69 可以登录 在windows下使用p
  • unity 打包获取android手机系统权限

    查了一下资料 unity里面自带有动态获取用户权限的方法Permission 需要UnityEngine Android命名空间 使用动态获取接口RequestUserPermissions 参数是一个string数组类型参数 测试代码 u
  • 纯手工开发的网站如何快速对接CMS系统

    纯手工开发的网站如何对接CMS系统 在如今的建站市场上 大部分网站都是基于模板CMS系统建站 比如大家所熟知的织梦 帝国 WP等等 用这些CMS建站最大的好处就是有丰富的建站模板可供选择 建站费用低且大部分模板CMS系统开源相对来说易部署
  • 提高eclipse的性能,去除validate验证,关闭checking for update自动更新

    一 去除validate验证 1 给eclipse桌面快捷方式添加参数 这些按自己的机器来配置 可google到很多资料 如 D java eclipse3 2 1 eclipse exe XX UseParallelGC XX PermS
  • STM32硬件错误HardFault_Handler的处理方法

    在用Keil对STM32的程序进行仿真时程序有时会跑飞 停止仿真程序会停在HardFault Handler函数里的死循环while 1 中 这说明STM32出现了硬件错误 STM32出现硬件错误可能有以下原因 1 数组越界操作 2 内存溢
  • java动态加载jar文件并执行方法

    在项目开发的过程中 有时候需要动态灵活的加载某个jar包并执行里面的方法的时候 我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用 接下来介绍如何动态加载jar包 直接上代码 核心的方法就是下面这
  • 【windows】Git中添加密钥、ssh密钥的创建与查看(打开id_rsa.pub文件)

    Git的安装和下载参考 里面有下载路径和安装方法 比较全面 自行下载 推荐用迅雷下 不然很慢 https www cnblogs com donglt 5211 p 9374551 html 1 创建密钥 下载成功后 在C盘user目录下点
  • blender 给某个类型添加自定义属性

    import bpy Int bpy types Ojbect myInt bpy porps IntProperty name test max 10 min 1 default 5 Float bpy types Mesh myFloa
  • sqlite3安装错误 node-pre-gyp http 403

    sqlite3安装错误 如图可以发现 访问 https mapbox node binary s3 amazonaws com sqlite3 v5 0 1 napi v6 win32 x64 tar gz 报错 403 我们用浏览器进去
  • sqli-labs靶机训练(11-15)

    less 11 POST型 1 寻找漏洞类型 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img YrAkcwyg 1641296909427 C Users 84305 AppData Roaming Typora
  • 攻防世界web

    攻防世界web 前言 准备ctf比赛 这里把攻防世界分值低于5分的基本刷了一遍 分值再高刷不动了 练习 view source 没难度知识禁用了右键点击 ctrl u查看源码拿到flag get post 这题没什么好说的 按着提示来就能拿