CTF练习平台——web(1)
1、签到题

直接加群就可以获取flag
2、Web2

尝试抓包失败

查看元素就发现了flag

3、文件上传测试

判断为上传绕过
尝试上传一个php

提示非图片文件,所以上传一个图片文件,再抓包试试


将HTTP数据包发到Repeater模式
将文件名的后缀改为php


发送数据包后返回flag

4、计算题

尝试输入40发现只能输入一位,页面设置了长度限制
改一下html的代码,再输入40即得到flag

5、web基础$_GET

题目已经给出源代码,直接构建payload

6、web基础$_POST


7、矛盾

根据源代码,要获得flag的条件是num变量不能是数字,但是要等于1
is_numeric()函数支持普通数字型字符串、科学记数法型字符串、部分支持十六进制0x型字符串,但是int强制类型转换不能正确转换类型有十六进制型字符串、科学计数法型字符串(部分)
利用PHP的弱条件漏洞:
== 在进行比较的时候,会先将字符串类型转换为相同,再比较大小(不考虑类型)
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较大小
所以构造payload
http://120.24.86.145:8002/get/index1.php?num=1e0.1

得到flag:
flag{bugku-789-ps-ssdf}
8、web3

直接查看源代码

在源代码中发现一串像HTML等语言转义的序列,将转义序列放在HTML文件中

执行test.html文件

得到flag:
KEY{J2sa42ahJK-HS11III}
9、sql注入

是一道sql注入题,先尝试了一般的注入,失败

尝试宽字节注入

该题为宽字节注入

测出字段数为2
获得当前使用的数据库

当前使用的数据库为sql5
再根据题目的提示,表为key,字段为string,且id=1,构造payload
http://103.238.227.13:10083/?id=1%df%27 union select 1,string from sql5.key where id = 1%23

得到flag:
KEY{54f3320dc261f313ba712eb3f13a1f6d}