Bugku:分析 日志审计

94 篇文章 2 订阅
9 篇文章 0 订阅

打开这道题,日志审计,第一次接触这样的题目。

打开压缩包之后只有一个txt文件。

打开这个文件就是密密麻麻

 

 

用Sublime打开之后,

比较清晰一点。

 

找到其中有URL类型的语句,

 

解码之后看看。

 

其他的语句也一样,不难想到是sql注入类型的语句,

 

可以搜索一下flag,

 

真的有一堆的语句,将这部分复制下来,进行URL解码,

 

有ORD(MID)表示用二分法盲注,观察到后面有200,404 之类的状态码。404很明显的就是不成功,200就是成功的,比如 LIMIT 0,1),1,1))>101,这里的101,网上大佬说是ascii码。根据对照表,

 

 

因为这里观察到LIMIT 0,1),1,1))> 的最后一个200是101,比如101 是e,他说要大于101,也就是加一之后,为102,所以102就是正确的flag字符,102对应的是f,以此类推。找到LIMIT 0,1),2,1))> 的最后一个200成功字符为107,107+1 = 108,对应l。

 

拉到最后,看到

 

这个flag应该有25个字符,

使用大佬的代码

 

import reimport urllib.parsef = open('C:\\Users\\apple\Desktop\\5b0b08e0-31aa-4a8d-ae19-89b843554506\\access.log', 'r')  # 下载的access.log文件的绝对路径,笔者是存在了d盘根目录下~lines = f.readlines()datas = []for line in lines:    t = urllib.parse.unquote(line)  # 就是将文本进行 urldecode 解码    if '1765' in t and 'flag' in t:  # 过滤出与flag相关,正确的猜解(只要200的)        datas.append(t)flag_ascii = {}for data in datas:    matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)  # 在date 中搜索符合正则表达的字符串并 将匹配的字符串存入变量 matchObj 中    if matchObj:        key = int(matchObj.group(1))  # 取变量matchObj 中 的第一个括号里的内容 (也就是上条语句中的 (.*?)中的内容)并转为10进制        value = int(matchObj.group(2)) + 1  # 取变量matchObj中的第二个括号里的内容,并转为 10 进制        flag_ascii[key] = value  # 使用字典,保存最后一次猜解正确的ascii码flag = ''for value in flag_ascii.values():    flag += chr(value)print(flag)

 

直接出现结果,

 

flag{sqlm4p_15_p0werful}

 

这个代码还是很好理解的,就是很懒,懒得写。这个得克服啊。

 

欢迎关注我的微信公众号!!~~

一起快落学习CTF吧!!~~ (*^▽^*)

吾日三省吾身,为人谋而不忠乎?与朋友交而不信乎?传不习乎?

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酥酥糖学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值