今年十八,喜欢ctf-web
本来想早点睡,明天九点多有课,翻来覆去睡不着,抽了根烟,闲着也是闲着,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-option | Telnet选项设置 |
–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-quote | like -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
总结下学习方法:
- 实战效果远超于听课,听100节课不如做一道题
- 不会的先自己研究,确认自己解决不了再求人
- 这个方向注定要涉及很多工具,如果不用kali内置的话,自己配是个辛苦的过程,多学,多看,多听
- 最好不要选小众的工具,因为出问题的时候,可参考的资料真的很少
- 不要图省力,举个栗子:就算有sqlmap这种自动注入的工具,也先学完手工注入
- 点赞
- 收藏
- 关注作者
评论(0)