• 今年十八,喜欢ctf-web


    前言

    🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。

    🍁个人主页:红中

    🫒每日emo:等我把脸皮磨厚

    🍂专栏地址:网安专栏

     本来想早点睡,明天九点多有课,翻来覆去睡不着,抽了根烟,闲着也是闲着,12月就要准备考试,准备过年放大假了。

    今年最后一篇文章。

    有人说:你们这帮打CTF的都说web简单,没看简单到哪去。

    那好,我今天就说几个超级简单的web题目,题目来自bugku

    1、滑稽

    想想最简单的web题目是啥

    F12直接出flag

     刚进来就是铺天盖地的滑稽,吓劳资一跳

    直接F12,

     flag轻松获取

    2、计算器

     进来之后是个这玩意,56+26

    。。。

    有点难为人了,我直接通过计算器得知等于82

     往里输呗

     一输,发现不对劲,只能输入一个啊,那问题一定出在前端,看看源代码

    maxlength(最大长度)='1'

    直接改成2 

     输完点验证

     看到这是不是觉着web挺简单的了,别急,难的在后边

     知道get/post吧

    3、GET

     进来之后,发现是这么个玩意,简单的php代码

    通过get方式读取数据存储到what变量里,然后输出

    如果what==flag,输出flag

    get请求最大的特点就是喜欢把乱七八糟的东西放到链接里,那我直接反客为主

     成功获得flag

     4、POST

    post就不像get那么简单啦。

    但是有简便方法,我不讲正常方法了。

    正常就是通过post传递一个what=flag的参数进去,可以通过hackbar来实现

    简便方法

    winR cmd

    curl -d what=flag + 链接

     以下仅做了解

    参数描述
    -I/--head只显示传输文档,经常用于测试连接本身
    -o/--output把输出写到该文件中,必须输入保存文件名
    -O/--remote-name把输出写到该文件中,保留远程文件的文件名
    -F/--form模拟表单提交
    -s/--silent静默模式,不输出任何东西
    -S/--show-error显示错误,在选项 -s 中,当 curl 出现错误时将显示
    -L/--location跟踪重定向
    -f/--fail不输出错误
    -n/--netrc从netrc文件中读取用户名和密码
    --netrc-optional使用 .netrc 或者 URL来覆盖-n
    --ntlm使用 HTTP NTLM 身份验证
    -N/--no-buffer禁用缓冲输出
    -p/--proxytunnel使用HTTP代理
    --proxy-anyauth选择任一代理身份验证方法
    --proxy-basic在代理上使用基本身份验证
    --proxy-digest在代理上使用数字身份验证
    --proxy-ntlm在代理上使用ntlm身份验证
    -P/--ftp-port使用端口地址,而不是使用PASV
    -M/--manual显示全手动
    -Q/--quote文件传输前,发送命令到服务器
    -r/--range检索来自HTTP/1.1或FTP服务器字节范围
    --range-file读取(SSL)的随机文件
    -R/--remote-time在本地生成文件时,保留远程文件时间
    --retry传输出现问题时,重试的次数
    --retry-delay传输出现问题时,设置重试间隔时间
    --retry-max-time传输出现问题时,设置最大重试时间
    --socks4用socks4代理给定主机和端口
    --socks5用socks5代理给定主机和端口
    -t/--telnet-optionTelnet选项设置
    --trace对指定文件进行debug
    --trace-ascii Like跟踪但没有hex输出
    --trace-time 跟踪/详细输出时,添加时间戳
    -T/--upload-file上传文件
    -u/--user设置服务器的用户和密码
    -U/--proxy-user设置代理用户名和密码
    -V/--version显示版本信息
    -w/--write-out [format]什么输出完成后
    -x/--proxy在给定的端口上使用HTTP代理
    -X/--request指定什么命令
    -y/--speed-time放弃限速所要的时间。默认为30
    -Y/--speed-limit停止传输速度的限制,速度时间'秒
    -z/--time-cond传送时间设置
    -0/--http1.0使用HTTP 1.0
    -1/--tlsv1使用TLSv1(SSL)
    -2/--sslv2使用SSLv2的(SSL)
    -3/--sslv3使用的SSLv3(SSL)
    --3p-quotelike -Q for the source URL for 3rd party transfer
    --3p-url使用url,进行第三方传送
    --3p-user使用用户名和密码,进行第三方传送
    -4/--ipv4使用IP4
    -6/--ipv6使用IP6
    -#/--progress-bar用进度条显示当前的传送状态

     5、你必须让它停下

     简单描述一下,这是个不断刷新的网页,只有当图片成功刷出来的时候我们才有机会获得flag,有的师傅直接抓包上了,没必要

    ctrl u直接看源代码,优点是这里不会一直刷新

     直接F5刷新,省心省力

     当图片为10.jpg的时候,后面成功显示flag

     6、头等舱

     进来之后啥也没有,源代码也是

    头等舱。。。

    多少沾点。。不是,

    多少和头文件有点关系

     抓包

     7、本地管理员

     这是嘛玩意。。。

    先F12

     base64加密。去网站解一下

     啥也别说了,这是密码。

    账号是啥?

    管理员系统,还能有啥

    admin呗

     进去之后被封IP了

    再思考一下。。。

    本地管理员。。

    本地。

    打开抓包软件

     在头文件里把IP地址改为本地127.0.0.1/localhost

     8、成绩查询

     进来,第一眼,sql注入!

    抓包,找raw

     把raw里的东西存在一个文件里,我命名为1.txt

    然后sqlmap跑

     sqlmap.py -r 1.txt -p id current-db
    -r > 加载一个文件
    -p > 指定参数
    -– current-db > 获取当前数据库名称

     爆出数据库名叫skctf

    接着爆表

    sqlmap.py -r 1.txt -p id -D skctf --tables

    -D我个人觉着就是database的意思哈,方便记忆。

    --tables就是爆表

     爆出来有个叫fl4g的,差不多flag就在里面了

    接着爆字段

    sqlmap.py -r 1.txt -p id -D skctf -T fl4g --columns

    -T就是tables

    columns是字段

     

     接下来爆字段里的内容

    sqlmap.py -r 1.txt -p id -D skctf -T fl4g -C skctf_flag --dump

     成功爆出flag

    总结下学习方法:

    1. 实战效果远超于听课,听100节课不如做一道题
    2. 不会的先自己研究,确认自己解决不了再求人
    3. 这个方向注定要涉及很多工具,如果不用kali内置的话,自己配是个辛苦的过程,多学,多看,多听
    4. 最好不要选小众的工具,因为出问题的时候,可参考的资料真的很少
    5. 不要图省力,举个栗子:就算有sqlmap这种自动注入的工具,也先学完手工注入

  • 相关阅读:
    有 Docker 谁还在自己本地安装 Mysql ?
    瑞芯微RK3568控制板设计总结
    Linux常用命令总结
    286节---------6月22日
    【微信小程序开发】之微信授权登陆
    TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评
    Ai-WB2模组HTTP 客户端 HEAD和GET 请求方法
    入门设计原则C++实现二:开闭原则
    万户OA漏洞分析、利用与防护
    IDEA 高分辨率卡顿优化
  • 原文地址:https://blog.csdn.net/m0_55400802/article/details/128125395