第一次写,希望大神们多指点。

对于刚接触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的更多相关文章

  1. [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

    最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...

  2. 读书笔记之SQL注入漏洞和SQL调优

    原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...

  3. SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优

    SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...

  4. 【sql注入教程】SQL注入是什么?我们如何去玩转它

    [sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区   SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...

  5. [SQL注入2]FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION

    FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL.这是一款数据库管理系统,与oracle是同类型软件.08年左右的市场 ...

  6. sqli-labs(八)——修改密码处sql注入+http头sql注入

    第17关: 这是一个重置密码的功能存在sqk注入,尝试账号密码都输入'",发现只会显示登陆失败,没有报错信息. 这个时候先推测一下后台的sql形式大概应该是: update users se ...

  7. sql注入和防sql注入

    sql注入: from pymysql import * def main(): # 创建连接 conn = connect(host="127.0.0.1", port=3306 ...

  8. PHP:测试SQL注入以及防止SQL注入

    在写登录注册的时候发现了SQL和JS注入这个危害网站的用户举动: 测试方法: SQL注入: 先来做一个测试: 用户名:’ or 1 # 密码:随便写8位以上 验证码:写正确 好吧,就那么简单就进去了: ...

  9. SQL盲注、SQL注入 - SpringBoot配置SQL注入过滤器

    1. SQL盲注.SQL注入   风险:可能会查看.修改或删除数据库条目和表.   原因:未对用户输入正确执行危险字符清理.   固定值:查看危险字符注入的可能解决方案. 2. pom.xml添加依赖 ...

随机推荐

  1. 51单片机C51毫秒级(ms)精确延时

    如下程序能实现ms毫秒级的比较精确的延时 void Delayms(unsigned int n) { unsigned int i,j; ;j--) ;i>;i--); } 用keil可以看出 ...

  2. 华夏的理财30天A和华夏财富宝货币哪个收益比较好?

    1.收益性比较 华夏理财30天A001057属于债券型基金,华夏财富宝货币000343属于货币型基金(活期宝,类似余额宝)收益不同 2.流动性 活期宝是可以随时取现的产品,30天A是有封闭期的产品,这 ...

  3. 寻找第K小元素

    要在一个序列里找出第K小元素,可以用排序算法,然后再找.可以证明,排序算法的上界为O(nlogn). 在这里,给出两种可以在线性时间内找出第K小元素的方法. 方法1: (1) 选定一个比较小的阈值(如 ...

  4. 提升效率的Linux终端快捷操作汇总

    很多普通 Linux 桌面用户都对使用终端感到排斥和恐惧,其实它没大家想的那么复杂,很多常见操作都可以直接在终端中进行,如:安装软件.升级系统等. 无论你是新手还是 Linux 终端使用的老鸟,系统极 ...

  5. ajax:html5上传文件,上传之前可以实现本地预览

    本主题主要涉及两个新内容: 1.上传文件(主要使用了FormData) 2.本地预览(主要使用了FileReader) html5的FormData其实就是平时的Form表单,只是html5可以直接新 ...

  6. ios NSString 去除空格和回车

    去除两端空格 NSString *temp = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCh ...

  7. hdu 3395

    KM裸题 每个鱼都认为自己是雄性,而且会攻击它认为是雌性的鱼,每个鱼只能被攻击一次,被攻击后会产卵(个数是给的两条鱼的值的异或运算) #include<string.h> #include ...

  8. JAVA内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  9. HTML与CSS入门——第六章 使用字体

    知识点: 1.粗体.斜体和特殊文本格式的使用 2.字体的调整方法 3.特殊字符的使用方法 6.1 粗体.斜体和特殊文本格式: font-weight控制粗细 加粗<strong> font ...

  10. Asp.Net WebAPI传递json对象、后台手动接收参数

    1.前台代码 /* * 跨域请求Post * 1个对象参数,后台JObject接受 */ $.post(apiUrl.getOne("PostFourth"), { name: } ...