python日志审计系统_Bugku日志审计Python,bugku,python

打开log,长长的一片,

直接搜索flag,找到后面一部分

f52ac0130414a6939c71885a56031126.png

简单分析一下,在这flag之前的信息都没用,所以我就直接删除了,

fa96e3bccc8a8983c1474309f45901fc.png

对id参数的值进行url解码发现这是在注入,但是这样分析太麻烦了,所以我想尝试使用python来获取数据

先是获取到所有id参数的值并且将其url解码,同时把该请求的响应状态码200或404一同放入log.txt中

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import re

import urllib

#将access.log中的id参数值url解码,以及状态放入log.txt中

f=open("log.txt","w+")

fa=open("access.log","r+")

datapat = re.compile('id=(.+?)&Submit')

line = fa.readline()

print line

list = [];

while line:

# print datapat.findall(line)

data = datapat.findall(line)

if line.find('404') == -1:

list.append([data[0],'200'])

else:

list.append([data[0],'404'])

line = fa.readline()

for i in list:

decode = urllib.unquote(i[0])

f.writelines(decode+' '+i[1]+'\n')

f.close()

fa.close()

得到log.txt

6a0814461df097e4c7a10e90dacb6448.png

这是在盲注,由分析可以知道,前6行是判断该表中有多少数据,前3行判断出一个ascii码为49即数字1,后3行判断出没有,也就是说,拼接完成后得到数据量为1

后面就全部是对该数据进行注入获取了,mid(..,1,1)是获取数据的第一个字符,mid(..,2,1)是获取第二个字符,

由判断可以知道第一个字符的ascii码为102即'f',后面那应该就是flag了

对此写一个python代码来跑

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import re

import urllib

#获取到所有响应为200的行,并匹配获取数据的行,就是去掉前6行

f=open("log1.txt","w+")

fa=open("access.log","r+")

datapat = re.compile('id=2%27%20AND%20ORD%28MID%28%28SELECT%20IFNULL%28CAST%28flag%20AS%20CHAR%29%2C0x20%29%20FROM(.+?)&Submit')

line = fa.readline()

# print line

list = [];

while line:

data = datapat.findall(line)

if data:

print data

if line.find('404') == -1://只要不是404的就放入文本中

list.append(data)

line = fa.readline()

for i in list:

print i[0]

for i in list:

decode = urllib.unquote(i[0])//对其进行url解码

f.writelines(decode+'\n')

f.close()

fa.close()

#对log1.txt中的每行数据的ascii获取到,获取数据每个字符对应的几行里数字最大的一个进行+1再转字符

f = open('log1.txt','r+')

line = f.readline()

flag = ''

for i in range(1,25):

d = re.compile(str(i)+',1\)\)>(.+?) AND')

tmp = 0

while line:

data = d.findall(line)

if data:

if int(data[0]) >= tmp:

tmp = int(data[0])+1

line = f.readline()

else:

break

flag = flag + chr(tmp)

print flag

log1.txt

80aff50fc4e5f8a81a1ab479c1e03568.png

结果:

e2c6a9bead8b925b133ee7d7aa3db360.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值