sqli-lab第11关
第11关,我们就开始POST注入了。这里输入admin’ 后发现,这个注册界面有回显。考虑使用联合查询。闭合方式我们就不能用--+了,这里我们要使用 # 来进行闭合。
我们用联合查询测试一下,发现可以回显出东西。
同样的流程,爆出表名,列名,字段名
sqli-lab第12关
第12关闭合方式改变,使用“ )来闭合 。其余过程不变
sqli-lab第13关
这里尝试用 ‘ --+ 闭合的时候,页面回显出信息。发现是括号单引号闭合。
可以使用burp suite来抓包,抓到之后用Repeater模块来进行重放。这里我用报错注入,可以直接报错出数据库名,后面的操作就和之前相同了。本关只是改变了闭合方式。
sqli-lab第14关
先试一下闭合方式。 发现是 “ 闭合
和上一关相同,只是更改了闭合方式。因为这一关也会一回显错误,所以可以使用报错注入,也可以用BP抓包来看。
sqli-lab第15关
闭合方式是 ‘ 。本关就和前几关发生了一些变化,网页不再回显错误信息了。此时就不能使用报错注入了,就考虑一下布尔盲注。这里可以用python来写一个脚本,来对数据库名注出。用二分法的方式,配合request库中的post函数的用法,可以很轻松的住处库名。后面可以继续住处表名、列名,只需修改一下payload。
import requests
url = 'http://sqli/Less-15/'
def inject_database(url):
result = ''
for i in range(1, 20):
low = 32
high = 128
mid = (low + high) // 2
while (low < high):
payload = "admin' and ascii(substr(database(), %d, 1)) < %d#" % (i, mid)
param = {"uname": payload, "passwd": "111"}
res = requests.post(url, data=param)
if "flag" in res.text:
high = mid
else:
low = mid + 1
mid = (low + high) // 2
if mid <= 32 or mid >= 127:
break
result = result + chr(mid - 1)
print(result)
inject_database(url)
sqli-lab第16关
本关和上一关相同,网站都不会出现回显。闭合方式是 ”) 。同样可以使用和上一关相同的脚本,进行布尔盲注,最后爆出数据库名。
payload = "admin“) and ascii(substr(database(), %d, 1)) < %d#
sqli-lab第17关
第十七关,变成了重设密码。这里需要看一下源码,方便理解
通过vscode调试后,我们发现,在uname上不存在注入点。当使用php向数据库中写入或者读取数据时,若在进行操作前对字符串进行一些处理,如:过滤处理,可能会导致某些数据库语句因为特殊的字符引起的污染而出现致命的错误。为此,php中提供了一个“魔法开关”,magic_quotes_gpc。(该开关已在5.4.0版本被删除,始终置为off)当magic_quotes_gpc = on时,从外部post、get、cooki过来的数据都会在预定义字符之前添加”\“。这里我们的 admin' # 就被转义成了 admin \' #。
所以我们继续调试debug,发现并没有对passwd进行转义,所以,我们就可以将注入语句,写在passwd中传进去。
这里就成功爆出数据库了。我们再回到源码上去看。很明显可以看到,我们已经将后面的username给注释掉了,所以username不管是什么,已经不重要了。
sqli-lab第18关
18关,登录成功之后,页面会回显ip以及UA码。登录失败只会回显IP。
查看本关的源码后,发现对username和password都进行了过滤,所以这里就没有注入点。
这里在User-Agent后加上 ‘ 后,发现数据库爆出错误,所以注入点其实是在这里。我们可以在BP上抓包来看。
为了方便观看,就可以把User-Agent:这一栏清空来写我们的注入语句。这里也是用报错注入,爆出数据库名。后续的步骤和之前相同。
sqli-lab第19关
本关和第18关相似,只是注入点在refer这个字段。直接写报错注入即可。注意后面要加上and ' 来结尾
sqli-lab第20关
登录成功之后,会呈现出如下页面。可以看到页面回显信息中有ua码,ip, cookie, username, paddword, id结合题目提示,大致可以判断该关卡注入点在cookie处。
同样的,我们还是来抓包。这里的注入点是cookie这里,我们直接来注入
都是和前面机关一样的,报错注入,主要是寻找注入点。