CG-CTF 南邮 综合题2
个人网站 http://www.wjlshare.tk
0x00前言
主要考了三块 第一块是文件包含获取源码 第二块是通过sql绕过注入获取密码 第三块是三参数回调后门的利用 做这题的时候结合了别人的wp 同时自己也学习了很多 所以来总结一下
平台地址: https://cgctf.nuptsast.com/challenges#Web
题目地址: http://cms.nuptzj.cn/
0x01正文
打开题目发现是一个网页先把流程走一下看看有哪些地方可以钻空子
我们来一个个的来看一下 在第一个红框中输入 1 点击搜索 发现不行 提示要本地浏览器访问才可以 那么这里有可能有需要修改 User-agent来进行访问 昵称 留言那题 提交之后 会有一个弹窗 提示查看源码有惊喜
继续看 发现 这个CMS 说明这里有可能有文件包含
很有可能是 通过 php 伪协议来获取页面源码的 我们来试一下 发现在这里可以读取页面的源码
http://cms.nuptzj.cn/about.php?file=php://filter/convert.base64-encode/resource=say.php
通过base64解码可以获取到 我们这个say.php 的源码 看了一下源码发现存在 mysql_real_escape_string 这个会把特殊字符进行转义 所以我们看看 about.php 这个页面的源代码
这个看起来像是突破口 我去尝试了一下读取config.php 发现这个目录不让读取 然后loginxlcteam 看起来像一个后台登陆页面
在尝试了一些弱口令无果之后尝试别的方向 看看 可不可以从别的地方获取登陆密码和账号 之前那个需要本地浏览器访问的那边有可能就是突破口 尝试了读取源码之后 发现 源码中做了一个判断如果 user-agent 是Xlcteam Browser就可以进入
感觉这里有可能有sql注入 但是 这里引入了防sql注入的地方 同时也可以看到 这里sql获取是以post的方式进行获取的 获取参数 soid 的数值 查看sql给过滤的源码
这里只是简单的对 这些关键字变成空了 所以我们只要复写就可以了 至于空格只需要 /**/绕过就可以了 简单的测试后发现有四个列 union select 1,2,3,4,5 这样测试 在 4的时候出现了数字 我本来是使用order by 进行测试的 但是 应该是我水平的问题 发现测试无果
注入点为 2,3 后面就比较简单了 再结合之前文档里面的提示
soid=-1//ununionion//selselectect//1,(seselectlect//group_concat(userpapassss)//frfromom//adadminmin),(seselectlect//group_concat(usernanameme)//frfromom/**/adadminmin),4
爆出我们所需要的信息
写了个小脚本 得出登陆密码
numbers = [102,117,99 ,107, 114 ,117, 110, 116 ,117]
for i in numbers:
print(chr(i),end="")
#fuckruntu
得到密码 fuckruntu 账户admin
因为我们不知道这个小马的密码是什么 所以老办法 获取源码
这是一个三参数回调后门 http://cms.nuptzj.cn/xlcteam.php?www=preg_replace 这个回调后门主要是利用了回调函数 回调函数 简单的来说就是把函数当成参数来进行使用 这里 preg_replace 就是函数 被 $e 进行获取 然后当作参数进行传入
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换。当使用被弃用的 e 修饰符时, 这个函数会转义一些字符,在完成替换后,引擎会将结果字符串作为php代码使用eval方式进行评估并将返回值作为最终参与替换的字符串
wtf=print_r(scandir(‘.’));
获取到flag
CG-CTF 南邮 综合题2的更多相关文章
- 南邮综合题writeup
http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/index.php fuckjs直接console得到地址 http: ...
- 南邮CTF--md5_碰撞
南邮CTF--难题笔记 题目:md5 collision (md5 碰撞) 解析: 经过阅读源码后,发现其代码是要求 a !=b 且 md5(a) == md5(b) 才会显示flag,利用PHP语言 ...
- 南邮CTF - Writeup
南邮CTF攻防平台Writeup By:Mirror王宇阳 个人QQ欢迎交流:2821319009 技术水平有限~大佬勿喷 ^_^ Web题 签到题: 直接一梭哈-- md5 collision: 题 ...
- 南邮CTF--SQL注入题
南邮CTF--SQL注入题 题目:GBK SQL injection 解析: 1.判断注入点:加入单引号发现被反斜杠转移掉了,换一个,看清题目,GBK,接下来利用宽字节进行注入 2.使用'%df' ' ...
- 南邮JAVA程序设计实验1 综合图形界面程序设计
南邮JAVA程序设计实验1 综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...
- 南邮ctf-web的writeup
WEB 签到题 nctf{flag_admiaanaaaaaaaaaaa} ctrl+u或右键查看源代码即可.在CTF比赛中,代码注释.页面隐藏元素.超链接指向的其他页面.HTTP响应头部都可能隐藏f ...
- 南邮部分wp
MYSQL 打开robots.txt 鍒お寮€蹇冿紝flag涓嶅湪杩欙紝杩欎釜鏂囦欢鐨勭敤閫斾綘鐪嬪畬浜嗭紵 鍦–TF姣旇禌涓紝杩欎釜鏂囦欢寰€寰€瀛樻斁鐫€鎻愮ず淇℃伅 这一看乱码,放到新建tx ...
- 3. 关于sql注入的综合题
关于sql注入的综合题 ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...
- 南邮CTF--bypass again
南邮CTF--bypass again 提示:依旧弱类型,来源hctf 解析: 源代码: if (isset($_GET['a']) and isset($_GET['b'])) { if ($_G ...
随机推荐
- C#第一章 第一个C#程序
第一个C#程序 namespace 是C#中组织代码的方式,它的作用那个类似java中的包 using 在Java中作用如果导入其他包 应该是用import关键字而在C#中应使用using关键字来引用 ...
- 边学边体验django--表格
在模板的末尾,我们增加一个rlt记号,为表格处理结果预留位置. 表格后面还有一个{% csrf_token %}的标签.csrf全称是Cross Site Request Forgery.这是Djan ...
- 参数类型 (Mapper.java)常用
UserBaseInfo selectByMobile(@Param("mobile")String mobile,@Param("isDeleted")Int ...
- MySQL查询top N记录
下面以查询每门课程分数最高的学生以及成绩为例,演示如何查询 top N记录.下图是测试数据,表结构和相关 insert 脚本见<常用SQL之日期格式化和查询重复数据>. 使用自连接[推荐] ...
- League of Leesins
C - League of Leesins 首先找到每一串数字的头和尾两个数字,这两个数字有一个特点,就是它们在输入数据的时候都只会出现一次.我们在输出的时候用头和尾做第一数都可以. 然后第二个数只会 ...
- SSRF漏洞攻击利用从浅到深
梳理一下ssrf 不详细 简单记录 0x01 SSRF成因和基本利用0x02 内网打未授权redis0x03 关于ssrf打授权的redis0x04 写redis shell和密钥的一点问题0x05 ...
- oracle查询消耗服务器资源SQL语句
1.查找最近一天内,最消耗CPU的SQL语句 SELECT ASH.INST_ID, ASH.SQL_ID, (SELECT VS.SQL_TEXT FROM GV$SQLAREA VS WHERE ...
- JavaScript中常见数据结构
数据结构 栈:一种遵从先进后出 (LIFO) 原则的有序集合:新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. 队列:与上相反,一种遵循先进 ...
- nginx 配置简单 301 重定向
server { listen ; server_name your.first.domain; rewrite ^(.*) http://your.second.domain:8000$1 perm ...
- QThread 线程暂停 停止功能的实现
为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. //终止原始数据单元进队出队,并清空数据. static bool stopSign; //原始数据单元队列 ...