WPSEC-周计划(三)

这次来看看某著名大学——

南京邮电大学的CTF题目吧~

(Ps:因本人较懒,所以做题时都是手工+度娘,几乎没有用到浏览器以外的工具,如有更好的办法,欢迎留言告知~)

Web

签到题

直接查看源代码吧。。

  
key在哪里? 
 
      
      nctf{flag_admiaanaaaaaaaaaaa} 
 
 key在哪里? 
  

Flag:nctf{flag_admiaanaaaaaaaaaaa}

md5 collision

直接给了源码,来看看

$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
   echo "nctf{*****************}";
} else {
   echo "false!!!";
}}
else{echo "please input a";}

发现利用的是 MD51=MD52
来跳出flag,而且还给了个 参数a
,那么只需要让参数a的值经过 MD5加密后
与字符串 QNKCDZO
经过加密后的MD5值相等就好了。加密后发现是 0E开头
的密文,即 PHP解析0E开头的md5漏洞
。详情参照:
http://blog.csdn.net/bestlzk/article/details/77994272

那么直接在url后加上 ?a=s878926199a
(自行百度,数不胜数),即
http://chinalover.sinaapp.com/web19/?a=s878926199a

Flag就贴出来了。

Flag:nctf{md5_collision_is_easy}

签到题2

口令是 11位数
的zhimakaimen,输入会发现这个输入框限制输入长度为 10位数
,本人Firefox浏览器直接按F12(或鼠标单击右键审查元素)找到这一行:

maxlength=”10″的10改成>=11,再输入就可以提交口令了。

Flag:nctf{follow_me_to_exploit}

这题不是web

既然不是web,源码和头文件也没有任何提示信息,就 把这张图下载
下来,改为txt格式打开, Ctrl+F
快速查找,发现flag在文末。。还真的不是WEB啊

Flag:nctf{photo_can_also_hid3_msg}

层层递进

没啥思路。。。就右键查看源代码,跟随底部链接,依次访nctf{javascript_aaencode}

打开是乱码,习惯性用转码工具(Alt->查看->文字编码->Unicode)转换一下发现是一对堆表情,明显是JS加密,直接F12贴进控制台跑一下,Flag就出来了~

Flag:nctf{javascript_aaencode}

单身二十年

查看源码,点击
,Flag直接出来了。。

Flag:nctf{yougotit_script_now}

php decode

因为PHP环境没有配置好还是什么原因,据说 eval函数可以执行php代码
,但我将他写好放进本地根目录的时候打开会报错,所以也就没做 留着以后填坑

文件包含

LFI漏洞,自行百度补充。

学到了一点猥琐的知识,在服务器端的.php文件无法直接显示,用 base64加密(read=convert.base64-encode)后拿到密文再解密
,就可以看到源码了。

    asdf
    
<?php
    error_reporting(0);
    if(!$_GET[file]){echo 'click me? no';}
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag:nctf{edulcni_elif_lacol_si_siht}

?>

Flag:nctf{edulcni_elif_lacol_si_siht}

单身一百年也没用

和单身二十年一样,看源码,点击 结果却跳转到了

/no_key_is_here_forever.php,猜想是用了重定向, F12查看网络
,就能发现 index.php
这个包,果然是 302重定向
,查看响应没有东西,那么应该在 头文件
了,果然,不出所料~

响应头:

Server: sae
Date: Sat, 13 Jan 2018 08:17:43 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
flag: nctf{this_is_302_redirect}
Location: http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php
Via: 1566

Flag: nctf{this_is_302_redirect}

Download~!

COOKIE

先弄明白 COOKIE
是个什么东西,验证身份用的对吧?那么然后去看 请求包
,F12网络,发现请求头和响应头之间的基情:

Host: chinalover.sinaapp.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cookie: Login=0
Connection: keep-alive
Upgrade-Insecure-Requests: 1
DNT: 1
Cache-Control: max-age=0
Server: sae
Date: Sat, 13 Jan 2018 08:27:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Via: 15146
Set-Cookie: Login=0
Content-Encoding: gzip

cookie:Login=0,题目给的有 Tips
啊, 0==not
,按照 程序员的思维(不要问为什么,嘿嘿嘿)
,那么 1==yes
,改之,出Flag.

Flag:nctf{cookie_is_different_from_session}

MYSQL

按照提示进去 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 "

no! try again

"; } else{ echo($query[content]); } } ?>

好了,TIP又出来了,进去 sql.php
看看,什么都没有,回来看到这一行

if ($_GET[id]==1024) {
      echo "

no! try again

"; }

/sql.php?id=1024后提示 try again
,换到/sql.php?id=1025后提示 no more。。
虽然不懂原理,但是猥琐的试了一波 /sql.php?id=1024.5
,哈哈,成功拿到Flag~

后来才知道 重点是这儿

if ($_GET[id]==1024) {
      echo "

no! try again

"; } else{ echo($query[content]); }

要求提交的ID在值上==1024,但又不能是1024,否则就会try again。。任意的小数都可以~ ~ Wpsec的基友们记不记得 某浪想要的998
?同一个道理~

/x00

直接给了源码

view-source:

    if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

ereg详解

strops详解

这里ereg有两个漏洞

1.%00截断及遇到%00则默认为字符串的结束

2.当ntf为数组时它的返回值不是FALSE

所以有两个方法拿flag

1.令id=1%00%23biubiubiu

Flag:nctf{use_00_to_jieduan}

bypass again

打开见到

if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) === md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}

GET可以接受数组 但md5()不能加密数组内的数据,所以令 a和b分别为数组
,可以绕过,所以在url里加入 index.php?a[]=1&b[]=2
,即可看到Flag

Flag: nctf{php_is_so_cool}

综合题2

一大堆,是jother编码,控制台跑一下出来 1bc29b36f623ba82aaf6724fd3b16718.php
,贴入URL发现被耍了= =,TIP在头里,查看头文件发现

Server: sae
Date: Sat, 13 Jan 2018 08:47:08 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
tip: history of bash
Via: 1566
Content-Encoding: gzip

百度一波history of bash,发现某大佬文章
http://blog.csdn.net/pan_tian/article/details/7715436

,拜读完后明白有个东西叫做 .bash_history
,贴入url发现

zip -r flagbak.zip ./*

再次下载,发现被损坏无法解压。。常规思路,改为txt格式发现Flag~

Flag:nctf{bash_history_means_what}

简书责编内容来自:简书 (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » WPSEC-周计划(三)

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录