import re f = open("no no no.pcapng", "rb").read() a = re.findall(b"/sqli/example2\.php\?name=(...)", f) f1 = open("test.txt", "a+") for i in a: j = i.decode() strs = "".join(j) f1.write(strs) f1.close()
时间: 2023-11-09 14:08:41 浏览: 58
这是一段 Python 代码,其中使用了 re 模块进行正则表达式匹配。代码的功能是读取名为 "no no no.pcapng" 的二进制文件,从中匹配出所有包含 "/sqli/example2.php?name=" 字符串的内容,并将其解码后写入名为 "test.txt" 的文本文件中。
具体的实现过程是,使用 re.findall() 函数匹配所有符合条件的内容,返回一个包含所有匹配结果的列表 a。然后,遍历列表 a 中的元素,将其解码为字符串并写入文本文件中,最后关闭文件。
需要注意的是,代码中的正则表达式是使用字节字符串 b"/sqli/example2\.php\?name=(...)" 进行匹配的,其中的反斜杠 \ 是用来转义问号 ? 和点号 . 的。
相关问题
select_sqli = "SELECT time,sum(xiaoliang) FROM sheji.sale where type_c='两厢车' group by time ;" cur.execute(select_sqli) data = pd.DataFrame(cur.fetchall(), columns=['time', 'xiaoliang']) for col in data.columns: for i in range(1, len(data)): if data.loc[i, col]=="--": data.loc[i, col] = data.loc[i-1, col] data['time'] = pd.to_datetime(data['time'], format='%Y-%m') data['xiaoliang'] = data['xiaoliang'].astype(int) data = data.set_index('time') #data = data.sort_index() print(data) model = sm.tsa.ExponentialSmoothing(data, trend='add', seasonal='add', seasonal_periods=12).fit() forecast = model.forecast(12) plt.figure(figsize=(9.42,5.62)) plt.plot(data, label='Original Data') plt.plot(forecast, label='Forecasted Data') plt.xlabel('日期', fontproperties=font,fontsize=16) # 设置x轴标签字体 plt.ylabel('销量', fontproperties=font,fontsize=16) # 设置y轴标签字体 plt.title('销量变化', fontproperties=font,fontsize=16) # 设置标题字体 plt.xticks(fontproperties=font, fontsize=14) plt.yticks(fontproperties=font, fontsize=14) plt.savefig('total.png',dpi=300)为什么画出的图预测的是过去的时间,请修改
在绘制图像之前,需要对 `forecast` 进行处理,将其索引改为未来的时间点,然后再与原始数据拼接起来,才能得到正确的预测结果。
下面是修改后的代码:
```python
select_sqli = "SELECT time,sum(xiaoliang) FROM sheji.sale where type_c='两厢车' group by time ;"
cur.execute(select_sqli)
data = pd.DataFrame(cur.fetchall(), columns=['time', 'xiaoliang'])
# 处理缺失值
for col in data.columns:
for i in range(1, len(data)):
if data.loc[i, col] == "--":
data.loc[i, col] = data.loc[i-1, col]
# 转换时间序列数据
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
data['xiaoliang'] = data['xiaoliang'].astype(int)
data = data.set_index('time')
# 构建模型并预测未来数据
model = sm.tsa.ExponentialSmoothing(data, trend='add', seasonal='add', seasonal_periods=12).fit()
forecast = model.forecast(12)
# 将索引设置为未来的时间点
idx = pd.date_range(start=data.index[-1], periods=12, freq='M')
forecast.index = idx
# 拼接原始数据和预测数据
combined_data = pd.concat([data, forecast])
# 绘制图像
plt.figure(figsize=(9.42, 5.62))
plt.plot(combined_data, label='Combined Data')
plt.xlabel('日期', fontproperties=font, fontsize=16)
plt.ylabel('销量', fontproperties=font, fontsize=16)
plt.title('销量变化', fontproperties=font, fontsize=16)
plt.xticks(fontproperties=font, fontsize=14)
plt.yticks(fontproperties=font, fontsize=14)
plt.legend()
plt.savefig('total.png', dpi=300)
```
在上面的代码中,我们首先将 `forecast` 的索引设置为未来的时间点,然后使用 `concat` 函数将原始数据和预测数据拼接起来,并将其作为参数传递给了 `plot` 函数。这样就可以得到正确的预测结果了。
靶场:http://192.168.126.137/pikachu/vul/sqli/sqli_str.php 要求:采用sql注入技术获取flag值,格式:flag{***********} 提示:flag值进行了rot13加密
这是一个Web应用程序的安全漏洞挑战,涉及SQL注入攻击。靶场URL指向一个名为`/sqli_str.php`的页面,可能存在一个未正确处理用户输入的安全问题,允许恶意用户通过插入SQL查询来访问数据库中的数据。提示提到flag值经过rot13加密,意味着你需要先对获取到的数据进行解密。
为了完成这个任务,你需要:
1. **识别注入点**:分析URL和PHP脚本,找到能接收用户输入的地方,通常是GET或POST请求中的查询字符串部分。
2. **构造payload**:利用SQL注入语法,插入可以查看flag数据的查询。由于提示提到了rot13加密,你可能需要构造一个包含`UNION SELECT`的查询,然后解码结果。
```sql
SELECT column_name FROM table_name WHERE condition LIKE '%username%' OR column_name = UNHEX('hex_string') -- 这里的'hex_string'是你获取到的经过rot13编码的数据
```
这里的`column_name`是你要找的字段名,`table_name`是对应的表名,`username`是一个假定存在的用户名,`hex_string`会被你的查询替换为解码后的flag。
3. **测试并解码**:在你的工具(如Burp Suite、Postman等)中,尝试不同的payload,并观察返回结果。一旦看到可能的flag,使用rot13解密它。
4. **提交结果**:确认解密后的flag符合要求的格式`flag{***********}`,然后提交给靶场系统。
阅读全文