记一次墨者mysql手工sql注入

目录

1.测试内容字段数量是多少,回显的页面信息是多少个

1.1:测试字段数量

1.2:测试回显内容数

 2.信息获取

2.1:用户名和数据库名

2.2:表名和列名 

3.用户登录

3.1获取账号和密码

3.2密码解密

4.实战内容总结


1.首先需要对?id内容进行测试,测试内容字段数量是多少,回显的页面信息是多少个等。

1.1:测试字段数量

在http://127.0.0.1/test.php?id=1中,在后面添加order by n即可查看字段数,其中n表示数 字,该sql语句意思是表示按select的第几个字段进行排序,也就是说当数字数量超过字段数后 ,页面则会报错

为4时显示正常

为5时显示异常

由此基本可以判定当前表中有4个字段

1.2:测试回显内容数

回显内容数量需要使用sql语句union,在http://127.0.0.1/test.php?id=1后添加union select 1,2,3,4,首先select 数字时,只会显示数字内容并且可以不用添加from的表信息

                               

其次union联合时需要两个表中的字段数是一样的,故这里需要select 1,2,3,4,至于为什么 是1,2,3,4其实只是为了好判断是第几个字段,实际是可以随便设置内容的。

这里举例union的使用,两边查询表需要字段数相同

我们知道http://127.0.0.1/test.php?id=1是"相当于"select * from xx where id=1的,那么我  们可以将id设置为-1,这样查询结果依然会有,只是没有内容。                 

做了这么久的铺垫其实就为了一个目的,由于设计的页面,在连接数据库后,只设置了几个 显示view,用于显示数据库中数据,那么我们就要进行测试页面有几个view能显示几个字 段,我们通过http://127.0.0.1/test.php?id=-1 union select 1,2,3,4,就可以查看显示4个字 段中哪几个字段了

可以看到他有2个view,且显示表中的第二个字段和第三个字段,这样我们就可以使用 mysql中的函数索取信息了

 2.信息获取

2.1:用户名和数据库名

根据上文中我们知道4个字段中他只显示了2,3字段,我们将2,3改为mysql中的user(),database()函数,就可以查询到具体数据库的信息了 

信息获取的路径按照用户名->当前数据库名->表名->字段名的顺序进行查找,查询的目的  是为了找到数据库中存放的账号和密码,而查询账号和密码需要找到表名和列名,我们都    知道mysql数据库目前版本带有information_schema数据库,其中设有所有表名和列名 

2.2:表名和列名 

已知我们知道数据库名的,那么我们就可以根据数据库名找到该数据库有哪些表,使用        http://127.0.0.1/test.php?id=-1 union select 1,database(),group_concat(TABLE_NAME separator ';'),4 from information_schema.TABLES where TABLE_SCHEMA='mozhe_Discuz_StormGroup'

 ​​​何为group_concat呢?它可以将同一个字段下的行拼接在一起,并且可用separator进行分隔符分开

找到具体表名后,我们需要选取筛选出存有密码的表,从英文名称来看我们可以先行选用stormgroup_member表进行查询列名,使用sql指令http://127.0.0.1/test.php?id=-1union select 1,database(),group_concat(COLUMN_NAME separator ';'),4 from information_schema.COLUMNS where TABLE_NAME='StormGroup_member'

                  

至此我们已经获取到了name和password的字段,接下来就是查询字段值进行登录了

3.用户登录

3.1获取账号和密码

由于我们已知了字段名了,且已知表名,于是就可以通过http://127.0.0.1/test.php?id=-1union select 1,group_concat(name separator ';'),group_concat(password separator ';'),4 from StormGroup_member直接获取账号和密码字段下所有值

3.2密码解密

获取到密码和账号后,可以发现有2个账号和2个密码,我们需要对其进行选择,并且观察密码特性可以发现它是由英文字母和数字构成的32位md5加密(也可能是其他加密形式),但是我们这里可以先假定尝试,这里我们选取第二个密码并且打开md5解密进行解密尝试

成功解密就可以进行登录尝试了

至此sql注入实战结束

4.实战内容总结

sql注入实质是通过sql语句对于其过滤不严谨的一次语句执行,说白了就是通过sql语句执行相关内容,对sql语句的学习内容要求较高,需要熟悉sql语法和数据库环境,另外如果不知道账号和密码存放表是很难进行查询的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值