week one

1 /x00

提示:有多种解法,你能找到几种

源码:

writer up:

题目直接给出了源码,get 到一个 nctf 这个变量,int ereg(string pattern, string originalstring, [array regs]);,ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false,这里需要输入的是全数字,但是 ereg存在一个截断漏洞,即当字符串匹配中出现 %00(NULL)是,匹配截止。所以我们可以在输入字符串的时候,在字符串里面添加一个%00,然ereg函数截至,有因为在遇到 %00 之前的字符串是满足全是数字的所以 ereg 函数返回 TURE 。 strpos()函数,返回一个字符串中子字符串第一次出现的位置,即输入的字符串里面有"#biubiubiu",即可得到flag

方法1:使用 %00 ,截断,构造payload,nctf=1%00%23biubiubiu,这里的#使用url编码,然后得到flag

方法2:百度了一下用数组绕过。

2 Cooke

提示:0 == not (那不能0 不就好了)
writer up:

3 PHP decode

提示:

源码

  1. <?php
  2. function CLsI($ZzvSWE) {
  3.  
  4. $ZzvSWE = gzinflate(base64_decode($ZzvSWE));
  5.  
  6. for ($i = 0; $i < strlen($ZzvSWE); $i++) {
  7.  
  8. $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);
  9.  
  10. }
  11.  
  12. return $ZzvSWE;
  13.  
  14. }
  15. eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));
  16. ?>
writer up:

以前做过类似的题,先运行一遍,看看有什么变化,但是这个没有输出,注意到没有输入,然后把后面的eval改成echo ,顺利输出 flag

4 bypass again

提示:又是php弱类型。

源码:

writer up:

当看到这个源码的时候,第一反映,”==“双等号,直接两个用md5弱类型

方法:构造payload, a=s878926199a&b=s155964671a

5 变量覆盖

提示:变量覆盖

源码:

writer up:

extract()函数漏洞

方法:构造payload ?pass=a&thepassword_123=a,得到flag

6 SQL注入1

核心源码:

  1. <?php
  2. if($_POST[user] && $_POST[pass]) {
  3. mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  4. mysql_select_db(SAE_MYSQL_DB);
  5. $user = trim($_POST[user]);
  6. $pass = md5(trim($_POST[pass]));
  7. $sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";
  8. echo '</br>'.$sql;
  9. $query = mysql_fetch_array(mysql_query($sql));
  10. if($query[user]=="admin") {
  11. echo "<p>Logged in! flag:******************** </p>";
  12. }
  13. if($query[user] != "admin") {
  14. echo("<p>You are not admin!</p>");
  15. }
  16. }
writer up:

对两旁的空格去掉,在进行sqi语句拼接,

$sql="select user from ctf where (user=' ".$user." ') and (pw=' ".$pass." ')";

如果是admin用户,就可以直接得到flag,所以我们构造一个payload使得前面的user=admin,后面的pw被注释掉,这样就可以了,在mysql语句中,有三种注释方法 /**/ 多行注释,’--‘ 和‘#’都是注释到行尾。

所以可以构造一个payload

user=admin')#pass=123   ,闭合前面的user=' "XXX" ') 所以这里就需要添加一个“ ’) ”用来闭合前面。然后用” # “来注释掉后面的pass,这样就能无视密码直接登录,得到flag

7 pass check

源码提示:
  1. $pass=@$_POST['pass'];
  2. $pass1=***********;//被隐藏起来的密码
  3. if(isset($pass))
  4. {
  5. if(@!strcmp($pass,$pass1)){
  6. echo "flag:nctf{*}";
  7. }else{
  8. echo "the pass is wrong!";
  9. }
  10. }else{
  11. echo "please input pass!";
  12. }
  13. ?>
writer up:

这里用到了strcmp()函数进行了比较,

这里也考察了php的弱类型,即当传入的为一个数组时,会返回NULL,所以运用这个特性,

payload : pass[]=123

(拿到这个题目就先抱着试一试的心态去直接post一个数组,居然成功了,然后去百度了一个strcmp()函数)

8 起名字真难

源码提示:
  1. <?php
  2. function noother_says_correct($number)
  3. {
  4. $one = ord('1');
  5. $nine = ord('9');
  6. for ($i = 0; $i < strlen($number); $i++)
  7. {
  8. $digit = ord($number{$i});
  9. if ( ($digit >= $one) && ($digit <= $nine) )
  10. {
  11. return false;
  12. }
  13. }
  14. return $number == '54975581388';
  15. }
  16. $flag='*******';
  17. if(noother_says_correct($_GET['key']))
  18. echo $flag;
  19. else
  20. echo 'access denied';
  21. ?>
writer up:

这里的noother_says_correct($_GET['key'])中需要传入一个Key ,但是

  1. for ($i = 0; $i < strlen($number); $i++)
  2. {
  3. $digit = ord($number{$i});
  4. if ( ($digit >= $one) && ($digit <= $nine) )
  5. {
  6. return false;
  7. }
  8. }
  9. return $number == '54975581388';
  10. }

传入了一个key之后,对key中的每一位取ascll码,但是当取回的ascll码是0~9是会返回false,而且要number == 54975581388, 所以这里就很头大,可以考虑一下用16进制试一试

发现54975581388 = 0xccccccccc

构造payload

?key=0xccccccccc

9 密码重置

提示:

重置管理员账号:admin 的密码

writer up:

看到这个题的时候,先随便试一下,用burpsuit抓一个包,发现无论怎么改“newpass”这一项都没有变化,都是error。

突然注意到了

然后把上面的user1=Y3RmdXNlcg==换成 'user1=YWRtaW4=' (admin), ctfuser换成admin,得到flag

10 实战题 1

writer up:

打开网站后是一个好大一片的字符,直接扔到控制台,得到 1bc29b36f623ba82aaf6724fd3b16718.php 这个东西,访问一下http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/1bc29b36f623ba82aaf6724fd3b16718.php  感觉。。

用burpsuit 抓了一下包,什么东西都没有,提示tip在脑袋里,翻翻http头,咦,有一个东西。tip: history of bash ,这个不就是tip啊,

可是这个history of bash是个什么东西,,百度啊百度,还是搞不懂是个什么东西,而且都是 用的 bash_history ,好不容易翻到了一个这么用的 /.bash_history 试一下把,http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history

哟成功了,哈哈哈,里面得到了一个命令个一个文件路径

嘿嘿嘿,连接路径,下载,打开得到flag

还是不懂linux里面的bash_history 是个什么东西。means what???

CG-ctf WP的更多相关文章

  1. swpu新生赛ctf wp

    WEB:gift_F12 没啥好说的 直接F12得了 NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} RE 简简单单的解密 import base64, url ...

  2. 2018工业信息安全技能大赛华东赛区初赛 第2题 writeup

    2018工业信息安全技能大赛华东赛区初赛 第2题 解题思路 本题主要考察点是对常见工控协议的理解(modbus/tcp和s7comm),题目目标是寻找出报文中某条异常报文流量.很让人疑惑的是,题目中并 ...

  3. 记一次CTF出题WP

    笔者有幸参与一次CTF入门级的出题,在此记录一下WP 1.测试你得手速 1.用IDA打开程序 找到单击次数, 获取全局变量地址. 打开程序 打开OllyDbg attcach后在左下角按CTRL+N ...

  4. 各种CTF的WP

    http://l-team.org/archives/43.html PlaidCTF-2014-twenty/mtpox/doge_stege-Writeup http://l-team.org/a ...

  5. 成都大学CTF 网络攻防演练平台 WP

    web1 输入框那里鼠标右键,审查元素,删除maxlength web2 http://ctf.cdusec.org:8082/web2/?cdusec=tql web3 同上,用火狐hackbar或 ...

  6. 深信服杯ctf部分wp

    CRYPTO1,NO SOS题目给了一段由.和-构成的密码由于题目提示不是摩斯码,将.和-化为0和1,长度为65位无法与8或7整除,无法转换为ascii,但可以被5整除,猜测为培根密码,将0化为a,1 ...

  7. 2019看雪CTF 晋级赛Q2第四题wp

    上次参加2019看雪CTF 晋级赛Q2卡在了这道题上,虽然逆出算法,但是方程不会解,哈哈哈哈,果然数学知识很重要呀,现在记录一下. 首先根据关键信息,根据错误提示字符串定位到这里: 1 int __t ...

  8. N1BOOK——[第五章 CTF之RE章]wp

    推荐在了解了相应章节的内容后再来练习,你会觉得顿时悟了 记录一下自己的解题过程 2,3,4题目附件来源:https://book.nu1l.com/tasks/#/pages/reverse/5.4 ...

  9. 【WP】【web】中学生CTF | web部分wp

    $_GET 源码: <?php show_source(__FILE__); include 'config.php'; if(!isset($_GET['args'])){ die(); } ...

  10. 实验吧ctf题库web题wp

    经历了学校的校赛,一度自闭,被大佬们刺激的要奋发图强. 1.后台登录 链接: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php 打开题目首先查看源码, ...

随机推荐

  1. 实验五 <FBG>团队亮相

    一.队名:FBG 二.队员: 201571030321:马玉婷 (小队长) 201571030317:马美玲 201571030331:益西卓嘎 三.队员风采: 201571030321:马玉婷 风格 ...

  2. [Shiro] tutorial 1 :SecurityManager and Subject

    SecurityManager是Shiro的绝对核心,不同于java.lang.SecurityManager,每个应用程序都要有一个SecurityManager. 所以我们第一件事就是配置一个Se ...

  3. Nginx缓存

    一.基于proxy_cache的缓存 worker_processes ; events { worker_connections ; } http { include mime.types; def ...

  4. java.nio.file.NoSuchFileException

    springboot +es es 2.1.0 参考这个 https://www.cnblogs.com/yueshutong/p/9381543.html cluster-nodes :改成127. ...

  5. Java源码阅读顺序

    阅读顺序参考链接:https://blog.csdn.net/qq_21033663/article/details/79571506 阅读源码:JDK 8 计划阅读的package: 1.java. ...

  6. win7安装loadrunner 安装相关问题解决方案

    安装loadrunner缺少2.8 sp1组件解决方案 这是因为注册表缺少FullInstallVer和Version,归根到底是madc安装的的问题 以下是解决方法: 1.运行regedit,打开注 ...

  7. 基于RabbitMQ rpc实现的主机管理

    要求: 文件分布: 流程图: import pika import os import socket class Server(object): def __init__(self, queuenam ...

  8. 运用jieba库 寻找高频词

    一.准备 1.首先 先用cmd 安装 jieba库,输入 pip install jieba 2.其次 本次要用到wordcloud库和 matplotlib库,也在cmd输入pip install ...

  9. 压测过程中出现ops断崖式下跌原因及排解

    压测机器: 100台docker redis集群:16个分片 在开始压测的半个小时中,一直很稳定,ops稳定在20w左右.但是接下来突然ops断崖式下跌,ops降到了3w以下.然后持续一段时间,直至变 ...

  10. Fortran程序调试中的“吐核”错误

    在CentOS7上安装了PGI编译器,但是调试过程中遇到的“段错误(吐核)”一直让人很头疼. 通常采用在程序中增加屏幕输出代码的方式来追踪和定位出错的变量,比如下面这个样例程序就在第16行和第18行增 ...