CBC翻转攻击,来自一道CTF题的学习大礼包

一、背景

最近报名参加了一个CTF比赛,学长介绍了个网站,实验吧。开始了做题之旅。说句实话,网站还行,就是那个假设题目的服务器不太行。老是出现无响应的情况。
遇到一个题目名称为简单的登录题的问题

二、题目分析流程

  1. 题目
    格式:flag:{xxx}
    解题链接: http://ctf5.shiyanbar.com/web/jiandan/index.php
  2. 做这种题目的思维习惯:
    • 如果是get请求。有url参数立即考虑sql注入。
    • 没有的话,用谷歌浏览器的调试功能,看请求头和响应头
  3. 打开看看,是个登录页面,二话不说随便输入了内容并且提交了。
    题目
  4. 提交了显示个hello,好吧是post请求,没url参数。于是先看看请求头和响应头。
    hotice0
  5. 果然发现了提示内容
    在这里插入图片描述
  6. 果断访问test.php,出现了熟悉的php代码
    在这里插入图片描述
  7. 谷歌浏览器里面看更香
    在这里插入图片描述
  8. 代码

define("SECRET_KEY", '***********');
define("METHOD", "aes-128-cbc");
error_reporting(0);
include('conn.php');
function sqliCheck($str){
   
	if(preg_match("/\\\|,|-|#|=|~|union|like|procedure/i",$str)){
   
		return 1;
	}
	return 0;
}
function get_random_iv(){
   
    $random_iv='';
    for($i=0;$i<16;$i++){
   
        $random_iv.=chr(rand(1,255));
    }
    return $random_iv;
}
function login($info){
   
	$iv = get_random_iv();
	$plain = serialize($info);
    $cipher = openssl_encrypt($plain, METHOD, SECRET_KEY, OPENSSL_RAW_DATA, $iv);
    setcookie("iv", base64_encode($iv));
    setcookie("cipher", base64_encode($cipher));
}
function show_homepage(){
   
	global $link;
    if(isset($_COOKIE['cipher']) && isset($_COOKIE['iv'])){
   
        $cipher = base64_decode($_COOKIE['cipher']);
        $iv = base64_decode($_COOKIE["iv"]);
        if($plain = openssl_decrypt($cipher, METHOD, SECRET_KEY, OPENSSL_RAW_DATA, $iv)){
   
            $info = unserialize($plain) or die("<p>base64_decode('".base64_encode($plain)."') can't unserialize</p>");
            $sql="select * from users limit ".$info['id'].",0";
            $result=mysqli_query($link,$sql);
            
            if(mysqli_num_rows($result)>0  or die(
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值