CG-CTF刷题记录(一)

md5 collision

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";}

本题考到了php的弱类型比较,当两个值使用==进行比较时,只是比较变量的值,而不会去比较变量的类型,md5(‘QNKCDZO’)的hash值为 0e830400451993494058024219903391 ,对于 0ed+ 类型的数字。==会认为该值为0,所以只需满足md5( a ) 的 值 为 0 e d + 类 型 即 可 满 足 条 件 , 并 且 a)的值为0ed+类型即可满足条件,并且 a)0ed+a != ‘QNKCDZO’,这里列出一些符合条件的值:

var_dump(md5('240610708') == md5('QNKCDZO'));
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
var_dump('0010e2' == '1e3');
var_dump('0x1234Ab' == '1193131');
var_dump('0xABCdef' == ' 0xABCdef');

这题不是WEB

这题不是web
这题考的隐写术,下载图片用记事本打开,可以看见flag。

层层递进

层层递进url
这题就是搞脑子,题目叫层层递进,F12查看源码发现src=S0.htm,不断点击(层层递进可能就是这个意思),知道src=404.html,点击进入查看源码,发现flag!!!!
在这里插入图片描述

AAencode

AAencode
参考文章http://blog.csdn.net/qq_38329811/article/details/78186362
aaencode:将JS代码编码程日式风格表情(_)。
提示是JavaScript编码,所以直接在firebug的console中输出试试,发现有三个字符没有定义\u03C9\uFF9F\uFF89,使用unicode进行解码,得到ω゚ノ这三个字母,可能在AAencode中没有这三个字符的定义,使用console定义一个变量var ω゚ノ=’ ';,定义ω゚ノ为空,再次在console中输出此段代码,弹出flag!

单身二十年

单身二十年
打开点击“到这里找key”,用burp抓取包,发现隐藏了flag
在这里插入图片描述

PHP decode

<?php
function CLsI($ZzvSWE) {
    $ZzvSWE = gzinflate(base64_decode($ZzvSWE));
    for ($i = 0; $i < strlen($ZzvSWE); $i++) {
        $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);
    }
    return $ZzvSWE;
}
eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));
?>

考察对PHP和shell的理解,eval()函数会执行括号里面的语句,这种代码在现实中一般是某个黑客上传的一句话马,但在这里eval里面肯定就是flag了,找个在线代码执行的网站,复制粘贴代码,将eval改成echo即可,得到flag!

在这里插入图片描述

文件包含

LFI,点击click me?no 发现url出现变化,出现file=show.php

http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

立马想到PHP伪协议,在url中添加

file=php://filter/convert.base64.encode/resource=index.php

这里我先resource=show.php,发现读取的是show.php中字母test123经过base64编码得到的代码,后改成index.php得到base64加密后的代码,进行base64解码

单身一百年也没用

单身一百年也没有
此题同单身二十年。
在这里插入图片描述

COOKIE

cookie
在这里插入图片描述
Burp截取包,发现cookie:login=0,根据提示改为1,得flag

MySql

mysql
根据提示,进入robots.txt文件,发现源码和tip:

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]);
  }
}
?>

发现只有id=1024时才有值,当id=其他值时,都提示没有内容,问题应该就在id=1024里,刚开始考虑注入,想通过union联合查询出id=1024的内容,但是怎么写也没成功,最后看了大神的writeup,发现考点是mysql精度问题,崩溃。。
输入id=1024.00000001等float类型的数即可满足if条件,得到flag。

GBK injection

gbkI
宽字节注入,这道题目对于我来说是理解SQL注入的非常好的题目,对于一个web小白来说,真的特别涨姿势。真的特别涨姿势!
1.根据题目提示、尝试构造宽字符。

2.发现出现GBK汉子,说明有注入点,继续构造payload;
在这里插入图片描述
3.继续构造payload,order by 3发现报错,order by 2 发现没错,说明有两个表格。
在这里插入图片描述
4.构造payload
在这里插入图片描述
注意看我这里将>and1=1改变为and1=2,否则出现不了下图提示:在这里插入图片描述
5.构造paylaod,发现数据库名sae-chinalover。
在这里插入图片描述在这里插入图片描述
6.构造payload,查看sae-chinalover下的表名。
在这里插入图片描述
出现如下表名:在这里插入图片描述
7.查看所有表的列,寻找想要的flag,这里我在ctf4下查到。
在这里插入图片描述在这里插入图片描述
8.看到没,flag列,拿下!
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值