登陆一下好吗
payload:
后端查询语句注入为:
得到flag:
who are you?
考点:基于时间的盲注,insert注入
ip伪装技巧:
因缺思汀的绕过
查看源代码。注释中有:
访问得到源码:
用到mysql中的with rollup
技巧。用普通的select查询下;
在加上group by pass with rollup
后
rollup在查询结果中加上了一行,并且pass字段的值为NULL。这样当我们post进的pwd的值为空,就能满足$key['pwd'] == $_POST['pwd']
的条件了。
在此之前我们还有一个条件要满足mysql_num_rows($query) == 1
,我们要选择pass为NULL的单独的这一条记录。从源码分析可得,过滤了逗号,我们不能简单的使用limit 1,1
这样的语法,而是可以使用limit 1 offset 1
。就本地环境而言,比如
|
|
最后构造出的payload如下:
之所以为offset为2,是因为rollup是在查询结果最后加上一行,而我们通过or 1=1
查询出来的不知道有多少行,所以这个2
是fuzz出来的。
最后flag:
简单的sql注入
|
|
Once More
|
|
第一层判断通过ereg,要求只能出现字母和数字,但ereg有缺陷,可以用%00绕过。第二层判断要求位数少但要大于9999999,可以利用科学计数法。最里层要求出现*-*
,用%00后面再加上即可。
payload:
flag:
Guess Next Session
|
|
给了源代码
预测是个幌子。session_start()
基于PHPSESSID=oso27id67fqu8hbvq57bacahn3作为身份认证信息,所以我们随便在PHPSESSID中加几个字母,这时服务器端的$_SESSION['password']
为空,然后我们的password再置为空,
然后就得到了flag:
FALSE
|
|
给了源码:
输入的name和password不能一样,之后的sha1比较用了===
,不存在弱类型问题。但sha1不能处理数组,当我们传入name[]=1&password[]=2
时,会造成sha1(Array) === sha1(Array)
,即NULL===NULL
,从而吐出flag。本地测试如下:
payload:
上传绕过
上传路径截断。
- burp抓包,修改为 uploads/cap.php .jpg
- 转到hex编码,将空格20,改为00
- 发包。
|
|
程序逻辑问题
|
|
访问后查看源代码,有个index.txt。得到源码:
对$user没有过滤,尝试报错注入:
结果很尴尬:
好吧题目既然说是逻辑漏洞,接下来那就找咯。可以看到它的用户名和密码是分开判断的。并且用户名处存在注入。所以思路如下,我们给用户名传入:
构成的sql语句为:
第一个查询结果为空,所以结果返回的是我们传入的0e830400451993494058024219903391
,即此时,$row[pw]=0e830400451993494058024219903391。而md5(QNKCDZO)正是该0e字符串值。
最后的payload:
得到flag:
what a fuck!这是什么鬼东西?
jsfuck。f12里控制台运行一下,得到flag:
php大法好
访问
得到提示:
访问,得到源码:
二次解码。payload:
flag:
这个看起来有点难
经过fuzz,可以知道是整数型注入。
得到表名。
得到列名
得到flag:
flag:
貌似有点难
|
|
题目提供了源码:
抓包,添加X-Forwarded-For: 1.1.1.1
得到flag:
猫捉老鼠
|
|
forbiden
题目说:Make sure you are in HongKong
抓包,修改:
得到flag: