题目来源:http://www.shiyanbar.com
一、MD5参数注入攻击
原理:将一些字符串例如e58,ffifdyop这些,通过MD5加密后可以形成特殊字符(or,’’)从而构造成完整的sql注入代码
MD5函数解释:
Ctf题目源码:
CTF题目解题分析:
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '.md5($password,true)'
让password变量的值为ffifdyop,经过MD5的2进制加密后为’or’6�]��!r,��b,那么组成的sql语句为$sql = "SELECT * FROM admin WHERE username = ‘admin’ and password = ’ ‘or’6�]��!r,��b’”
真and假or真=真,这样$sql这个变量就有值了,就能成功拿到flag
二、Post类型mysql报错注入
原理:利用mysql报错注入逐步获取数据库名字、数据库表名、数据库字段名.
CTF题目源码:
解题分析:
构造的sql语句:$sql="select * from users where username=''or extractvalue/*' and password='*/(1,concat(0x7e,(select database())))or ''
可以发现最终形成的sql语句是:select * from users where username=''or extractvalue(1,concat(0x7e,(select database())))or ''
解题步骤:
1、获取当前数据库名字
2、获取表名:
3、获取字段名
4、获取指定表名、指定字段名的值:
如果大伙看不懂这里的sql报错注入,我会出一篇来讲关于sql各类型注入的讲解文章
三、HTTP头参数伪造绕过
题目:
解题思路:
要得到flag就要满足3个条件(安装.net 9.9,使用的是ie浏览器,使用地区在英格兰),那么就通过改包伪造http头信息来绕过他的机制。
解题步骤:
利用burp抓包修改包的信息(浏览器,时区,Net9.9)
成功获取到flag
四、php运算符以及序列化
Php序列化:PHP序列化在我们实际项目运行过程中是一种非常常见的操作。比如当我们想要将数组值存储到数据库时,就可以对数组进行序列化操作,然后将序列化后的值存储到数据库中。其实PHP序列化数组就是将复杂的数组数据类型转换为字符串,这样就方便数组存库操作。
举一个php序列化的例子:
Php运算符:PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。(我们了解的哈希算法有md5)
了解完后开始我们的CTF题目:
解题分析:
打开网页源码,查看他的提示
解题步骤:
输入payload后提示了下一关的网页目录
进入下一关后,网页源码就是上面解题分析中的第二张图
成功获取到flag
扩展:下面是可以让MD5加密后为0的字符串
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
欢迎大家加入渗透学习交流群:1084999372
欢迎大家加入渗透学习交流群:1084999372