美文网首页CTF
[SHA2017](web)writeup

[SHA2017](web)writeup

作者: _Deen | 来源:发表于2017-08-07 15:17 被阅读88次

    [SHA2017](web) writeup

    Bon Appétit (100)


    Ethical Hacker (200)


    • 这题是一道注入
    • 手工fuzz情况如下
      • 注入点在email这个位置
      • 过滤了空格,可以用/**/代替
      • 过滤了括号
      • 可以使用 -- 进行注释
      • 采用union select 语句进行注入

    这题是一个sqlite数据库的注入

    sqlite注入简介看这:

    http://www.cnblogs.com/xiaozi/p/5760321.html

    id=1 : 7RTSGl9v907CzSdo
    id=2 : W+OTqx5JlGWm
    id=3 : pV/0nSQucWu5nAux
    id=4 : ChqS4hrWupnQ4+Hr
    ...
    

    wocao,这得有多少条,试试能不能用goup_concat,但是过滤了括号,这里要进行绕过,CVE-2016-1003

    给一个大佬的传送门

    https://lorexxar.cn/2016/12/28/cve-2016-10030/

    所以绕过就是利用双引号进行绕过括号过滤

    • 还有一个line表,

    所以,要得到flag,应该是按照line表的顺序,去对应base64,组成字典,将base64的内容进行拼接,这里需要一个脚本,将line,base64分别保存为文本
    注意:需要将base64当中的 / 斜杠去掉

    #! python
    # -*- coding: utf-8 -*-
    __author__ = 'Deen'
    
    import base64
    
    with open('base64.txt') as fp:
        b64 = fp.read().split(',')
        fp.close()
    
    with open('line.txt') as fp:
        line = fp.read().split(',')
        fp.close()
        
    # 进行对应组合
    dic = zip(line, b64)
    flag = {}
    for i in dic:
        flag[i[0]] = i[1]
    
    # 按次序拼接
    content = ""
    for i in range(1, len(b64) + 1):
        content += flag[str(i)]
    
    # 二进制读写
    content = base64.b64decode(content)
    file = open('flag', 'wb')
    file.write(content)
    
    • 这什么文件,binwalk也看不出来
    • 不应该是会一张jpg么,解密也没有报错啊

    (后面会更新)

    相关文章

      网友评论

        本文标题:[SHA2017](web)writeup

        本文链接:https://www.haomeiwen.com/subject/zqkalxtx.html